Hur ser man till att defaultvärdet på OwnerDraw på en ärvd System.Windows.Forms.MenuItem blir satt till true. Testa att sätta den till protected override bool OwnerDraw men då kanske du måste implementera set också, men då kan du ju bara göra en tom set metod... Får följande felmeddelande: Jag har ändrat lite i ursprungsfrågan... Problemet finns inte för exempelvis Button men det finns för MenuItem! OM signaturen för MenuItem.OwnerDraw hade sett ut så här: Stämmer... men ursprungsproblemet är kvar... Hur ser jag till att den blir 'default' true? Nu kanske jag fullständigt missförstår vad du är ute efter, eftersom det verkar lite för enkelt... men om du vill sätta ett defaultvärde i en subklass så kan du väl göra det i konstruktorn ? Komplement: Mitt problem låg i att jag inte viste att man kunde skriva defaultvalue och category är ju attribut avsedda för designtime , och ska proppen alltid vara TRUE, så finns det ingen anledning att visa den i designtime.OwnerDrawn property default till true i ärvd MenuItem
Hur gör jag för att bli av med varningen "The keyword new is required on 'myItem.OwnerDraw' because it hides inherited member 'System.Windows.Forms.MenuItem.OwnerDraw'" från koden nedan.
<code>
[ Category("Blah blah"),Description("Blaha."),DefaultValueAttribute(true)]
private bool OwnerDraw
{
get
{
base.OwnerDraw = true;
return true;
}
}
</code>Sv: OwnerDrawn property default till true i ärvd controll
Sv:OwnerDrawn property default till true i ärvd controll
'myItem.OwnerDraw': cannot change access modifiers when overriding 'public' inherited member 'System.Windows.Forms.MenuItem.OwnerDraw'Sv: OwnerDrawn property default till true i ärvd MenuItem
Sv:OwnerDrawn property default till true i ärvd MenuItem
public virtual bool OwnerDraw
så hade du kunnat överrida den i en subklass så här:
public override bool OwnerDraw
men nu gör den ju inte det, så därför är det väl ganska naturligt att du får en varning när du försöker överrida.
Angående att samma problem inte uppstår med Button beror på att den inte har någon property som heter OwnerDraw, så därför kan det inte bli något problem med överridning i en subklass när det då helt enkelt inte handlar om en överridning.
/ TomasSv: OwnerDrawn property default till true i ärvd MenuItem
Sv:OwnerDrawn property default till true i ärvd MenuItem
public class MyMenuItem: MenuItem
{
public MyMenuItem()
{
OwnerDraw = true;
}
}Sv: OwnerDrawn property default till true i ärvd MenuItem
Du borde även kunna göra:
[ Category("Blah blah"),Description("Blaha."),DefaultValueAttribute(true)]
public new bool OwnerDraw
{
get
{
return true;
}
}
tillsammans med Tomas konstruktor alternativ
Om du nu försöker sätta OwnerDraw till nånting kommer den säga att den är read-only...
Sv:OwnerDrawn property default till true i ärvd MenuItem
<code>
private new bool OwnerDraw
</code>
Till på köpet ändrade jag den till private ;)
och Thomas bit bhade jag redan men som
<code>
base.OwnerDraw = true;
</code>
/Tackar, BennySv: OwnerDrawn property default till true i ärvd MenuItem
ärv "designern" för menuitem och filtrera bort OwnerDraw propertyn i "PrefilterProperties" metoden så kommer den inte visas i propertybrowsern..
(du måste även assigna din nya "designer" med din egen menuitem med "[Designer(typeof(mydesigner))]" attributet)
//Roger