2011-02-04 3 views
1

Я добавляю элементы в полоску инструмента, программируя, но проблема в том, что мне нужно добавить к ней проверенное свойство. Не знаю, как это сделать. Вот код:Добавить checked = true через программирование

toolStripMenuItemAudioSampleRate.DropDownItems.Add("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click)); 
toolStripMenuItemAudioSampleRate.Checked = (samplingRate == 8000);//Checks if the there is no vid device 

Теперь я знаю, что он будет работать неправильно, потому что я добавил проверил свойство toolStripMenuItemAudioSampleRate а не 8 kHz. Я пытаюсь добавить это свойство к динамически добавленным элементам.

Заранее спасибо.

+0

Когда вы говорите «добавить это свойство», я полагаю, вы имеете в виду «установить это свойство». Правильно ли я это говорю? – siride

+0

да, вы правы, я не являюсь носителем английского языка, поэтому ошибки всегда есть –

ответ

2

Чтобы сделать this код фантазер, я предлагаю удаление new EventHandler, который всегда избыточно, и с помощью инициализатора объекта:

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

Стиль gud, обработанный небольшой модификацией, вместо «ToolStripItem» заменен «ToolStripMenuItem» –

+0

Спасибо, исправил это. –

+0

Im Loving it.It просто уменьшил мой LOC до Half.Great! –

-1

Вы можете создать Декоратор (GOF Design Pattern) http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/book/hires/pat4dfso.htm

+0

По крайней мере, я могу знать, почему вы VoteDown? Шаблон адаптера предназначен для динамического и прозрачного добавления обязанностей к отдельным объектам. –

+0

Я не голосовал, но я тоже не вижу связи между шаблоном адаптера и задаваемым вопросом. –

+0

'ToolStripMenuItem' является стандартным классом рамок и уже имеет желаемую функциональность, ему просто нужно было установить его свойство. –

5

Вместо того, чтобы использовать метод Add(String, Image, EventHandler) помощника, чтобы создать выпадающий пункт, сделать свой собственный ToolStripMenuItem, установите его флажок, а затем добавить его в список.

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

с каких классов класс ToolStripItem имеет свойство Checked? http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.aspx –

+0

@ Jean-Christophe Fortin: Отредактировано с учетом того, что вам нужно «ToolStripMenuItem» для проверки. Я не потратил достаточно времени на msdn, чтобы увидеть, что 'ToolStripItem' был родительским классом, поскольку в OP не использовались имена классов. – unholysampler

0
toolStripMenuItemAudioSampleRate.DropDownItems["8 kHz"].Checked = (samplingRate == 8000) 

Это может делать то, что вы хотите. Возможно, неплохо было бы сохранить эти динамически добавленные элементы в массиве где-нибудь, так что вам не нужно использовать этот уродливый синтаксис.

Смежные вопросы