2011-04-15 23 views
1

Windowsフォームアプリケーション(VB.NET)では、コンボボックスがあり、特定の条件下で、ユーザーがドロップダウンリストを開くと、警告メッセージを表示します。 これはうまくいきます:DropDownイベントでは条件をチェックし、必要であれば警告メッセージを表示します。 警告メッセージで[はい]をクリックすると、メインフォームの別のタブに移動し、コンボボックスを含むタブから移動してもドロップダウンリストが表示されるという問題があります。 私はかなりの部分を検索して、DroppedDownをFalseに設定しようとしました.OnDropDownClosedなどを呼びましたが、何も機能しませんでした。 DropDownイベント内からドロップダウンリストを閉じると、そのドロップダウンリストが機能しません。 誰かが何か示唆できますか?VB.NETでComboBoxドロップダウンをプログラムで閉じることはできますか?

これまでの回答に感謝します。私は.NETフレームワーク2を使用していることを忘れていました。

+0

OKを。 他のタブに移動する直前(カスタムイベントを呼び出す)には、ConboBox DropDownStyleをComboBoxStyle.DropDownListに変更した後、元の値ComboBoxStyle.DropDownに戻した直後に設定します。 – JBB

答えて

3

ここでの問題は、の後にWinFormsがドロップダウンにのマウスをキャプチャしてイベントを発生させたことです。イベントハンドラ内では、ドロップダウンを防ぐために何もできません。あなたはすることができますが、マウスは 'uncapture'を予定しています。

private void comboBox1_DropDown(object sender, EventArgs e) 
    { 
     Dispatcher.CurrentDispatcher.BeginInvoke((Action)(()=>comboBox1.Capture=false)); 
    } 

.NET 4では、DispatcherはWindowsBaseアセンブリのSystem.Windows.Threading名前空間に存在します。

0

これは私のために問題を解決:私はシンプルな実用的なソリューションを見つけ

private void comboBox_DropDown(object sender, EventArgs e) 
{ 
    Dispatcher.CurrentDispatcher.BeginInvoke((Action)(()=>this.comboBox.DroppedDown = false;)); 
} 
関連する問題