C# 通过编程添加选中=真

C# 通过编程添加选中=真,c#,toolstrip,checked,C#,Toolstrip,Checked,我一直在通过编程向ToolStrip添加项目,但问题是我需要向它添加checked属性。不知道怎么做。 代码如下: toolStripMenuItemAudioSampleRate.DropDownItems.Add("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click)); toolStripMenuItemAudioSampleRate.Checked = (samplingRate == 8000);//Checks if t

我一直在通过编程向ToolStrip添加项目,但问题是我需要向它添加checked属性。不知道怎么做。 代码如下:

toolStripMenuItemAudioSampleRate.DropDownItems.Add("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click));
toolStripMenuItemAudioSampleRate.Checked = (samplingRate == 8000);//Checks if the there is no vid device
现在我知道它会出错,因为我已将checked属性添加到
toolStripMenuItemAudioSampleRate
不是
8 kHz
。我正在尝试将此属性添加到动态添加的项中


提前感谢。

您可以创建一个装饰器(GOF设计模式)

您可以创建装饰器(GOF设计模式)

不要使用
Add(String,Image,EventHandler)
helper方法创建下拉项,而是创建自己的
ToolStripMenuItem
,将其设置为选中,然后将其添加到列表中

ToolStripMenuItem item = new ToolStripMenuItem("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click));
item.Checked = (samplingRate == 8000);
toolStripMenuItemAudioSampleRate.DropDownItems.Add(item);

不要使用
Add(String,Image,EventHandler)
helper方法创建下拉项,而是创建自己的
ToolStripMenuItem
,将其设置为选中,然后将其添加到列表中

ToolStripMenuItem item = new ToolStripMenuItem("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click));
item.Checked = (samplingRate == 8000);
toolStripMenuItemAudioSampleRate.DropDownItems.Add(item);
那可能是你想要的。在数组中的某个位置保留这些动态添加的项可能是一个好主意,这样您就不必使用这种难看的语法

那可能是你想要的。在数组中的某个位置保留这些动态添加的项可能是一个好主意,这样您就不必使用这种难看的语法。

为了让代码更丰富,我建议删除总是多余的
新EventHandler
,并使用对象初始值设定项:

toolStripMenuItemAudioSampleRate.DropDownItems.Add (
    new ToolStripMenuItem ("8 kHz", null, mnuAudioSamplingRate_Click) {
        Checked = (samplingRate == 8000)
    });
为了使代码更丰富,我建议删除总是冗余的
新事件处理程序
,并使用对象初始值设定项:

toolStripMenuItemAudioSampleRate.DropDownItems.Add (
    new ToolStripMenuItem ("8 kHz", null, mnuAudioSamplingRate_Click) {
        Checked = (samplingRate == 8000)
    });


当你说“添加此属性”时,我想你的意思是“设置此属性”。我这样说对吗?是的,你是对的,我不是以英语为母语的人,所以当你说“添加此属性”时,错误总是存在的,我想你的意思是“设置此属性”。我说的对吗?是的,你说的对,我不是以英语为母语的人,所以错误总是存在的。至少我能知道你为什么要投自己的票吗?适配器模式用于动态透明地向单个对象添加职责。我没有投反对票,但我也看不出适配器模式与所问问题之间有任何联系。
ToolStripMenuItem
是标准的框架类,已经具有所需的功能,他只需要设置它的属性。。你说得对,这就是我想说的装饰图案。否则,首先@Afnan说他想将属性“添加”到一个对象中,这正是装饰师(我的错误)所做的。我不知道ToolStripMenuItem已经拥有了这个属性。至少我能知道你为什么要放弃吗?适配器模式用于动态透明地向单个对象添加职责。我没有投反对票,但我也看不出适配器模式与所问问题之间有任何联系。
ToolStripMenuItem
是标准的框架类,已经具有所需的功能,他只需要设置它的属性。。你说得对,这就是我想说的装饰图案。否则,首先@Afnan说他想将属性“添加”到一个对象中,这正是装饰师(我的错误)所做的。我不知道ToolStripMenuItem已经具有该属性。ToolStripItem的类从什么时候开始具有Checked属性@Jean-Christophe Fortin:编辑以反映您需要检查的
ToolStripMenuItem
。我没有花足够的时间在msdn上看到
ToolStripItem
是父类,因为OP中没有使用类名。ToolStripItem的类什么时候有Checked属性@Jean-Christophe Fortin:编辑以反映您需要检查的
ToolStripMenuItem
。我没有花足够的时间在msdn上看到
ToolStripItem
是一个父类,因为OP.gud样式中没有使用类名,只需稍加修改,而不是用“ToolStripItem”代替“ToolStripMenuItem”。我喜欢它。它只是将我的LOC减少了一半。太棒了!gud风格只需稍加修改,而不是“ToolStripItem”取代了“ToolStripMenuItem”。我喜欢它。它只是将我的LOC减少了一半。太棒了!