Добавить проверено = правда через программирование - PullRequest
1 голос
/ 04 февраля 2011

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

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.Я пытаюсь добавить это свойство к динамически добавляемым элементам.

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

Ответы [ 4 ]

5 голосов
/ 04 февраля 2011

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

ToolStripMenuItem item = new ToolStripMenuItem("8 kHz", null, new EventHandler(mnuAudioSamplingRate_Click));
item.Checked = (samplingRate == 8000);
toolStripMenuItemAudioSampleRate.DropDownItems.Add(item);
2 голосов
/ 04 февраля 2011

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

toolStripMenuItemAudioSampleRate.DropDownItems.Add (
    new ToolStripMenuItem ("8 kHz", null, mnuAudioSamplingRate_Click) {
        Checked = (samplingRate == 8000)
    });
0 голосов
/ 04 февраля 2011
toolStripMenuItemAudioSampleRate.DropDownItems["8 kHz"].Checked = (samplingRate == 8000)

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

0 голосов
/ 04 февраля 2011

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

...