2011-02-04 5 views
1

プログラミングでツールストリップにアイテムを追加しましたが、チェックされたプロパティを追加する必要があるという問題があります。そのようにする方法を知らない。ここ はコードです:プログラミングでチェックを= 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にcheckedプロパティを追加したので、それが間違って動作することを知っています。私はこのプロパティを動的に追加された項目に追加しようとしています。

ありがとうございます。

+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

私はそれを愛しています。それは単に私のLOCを半分に減らしました。 –

-1

あなたはデコレータ(GOFデザインパターン) http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/book/hires/pat4dfso.htm

+0

少なくともあなたはなぜVoteDownを知ることができますか?アダプタパターンは、個々のオブジェクトへの責任を動的かつ透過的に追加するために作成されます。 –

+0

私は投票しませんでしたが、私もアダプタのパターンと質問との間の接続が見えません。 –

+0

'ToolStripMenuItem'は標準のフレームワーククラスであり、すでに望ましいプロパティを持っています。 –

5

の代わりに、アイテムのドロップダウンを作成ToolStripMenuItem独自のものを作る、確認に設定し、その後に追加しAdd(String, Image, EventHandler)ヘルパーメソッドを使用して作成することができますリスト。あなたが欲しいものを行う可能性があります

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'が必要であることを反映するために編集されました。 OPでクラス名が使用されていないので、 'ToolStripItem'が親クラスであることを確認するのに、msdnに十分な時間を費やさなかった。 – unholysampler

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

。これらの動的に追加された項目を配列のどこかに保持しておけば、この醜い構文を使用する必要はありません。

関連する問題