- - PR -
[VB.NET] コンボボックスのDropDowm
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-04 02:12
ComboBoxで、フォーカスを受け取った時に自動的にドロップダウンさせたいんですが、どうすれば良いでしょう?
よくある以下の様なコードでは、TABやEnterキーでフォーカスを受け取った場合には上手くいくのですが、マウスのクリックでドロップダウンさせようとした時には、「一瞬開いて、すぐ閉じる。」という風な挙動になってしまいます。 Private Sub ComboBox1_Enter(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles ComboBox1.Enter ComboBox1.DroppedDown = True End Sub | ||||||||
|
投稿日時: 2005-02-04 09:22
「一瞬開いて、すぐ閉じる」のは、マウスのクリックでドロップダウンさせる前に、コードによってドロップダウンが開かれているためです。この挙動を回避するのは難しそうです。
あまり見栄えがよいとは思いませんが、Clickイベントにも ComboBox1.DroppedDown = True を記述すると、「一瞬開いて、一瞬閉じて、また開く」という挙動になります。 | ||||||||
|
投稿日時: 2005-02-04 10:44
コンボボックスだけを貼り付けたユーザーコントロールにラップし、
ユーザーコントロールのTabStop=True(デフォルト) コンボボックスのTabStop=False ユーザーコントロールのGotFocusイベントで、 ComboBox1.DroppedDown =True LostFocusイベントで ComboBox1.DroppedDown =False はどうでしょうか? 私の理解でこの動きが目的動作か微妙ですが 方法が無ければ試してください。 ///////////////////サンプル////////////////////////////// ユーザーコントロール:UserControl11 ユーザーコントロール内コンボボックス:ComboBox1 //フォーム初期化でサイズ調整// UserControl11.ComboBox1.Top = 0 UserControl11.ComboBox1.Left = 0 UserControl11.Size = UserControl11.ComboBox1.Size //イベント処理 Private Sub UserControl11_GotFocus(省略・・) Handles UserControl11.GotFocus UserControl11.ComboBox1.DroppedDown = True End Sub Private Sub UserControl1_LostFocus(省略・・) Handles UserControl11.LostFocus UserControl11.ComboBox1.DroppedDown = False End Sub ↑ ※ロストフォーカスで明示的に戻さないと私の環境では動きませんでしたので。。 | ||||||||
|
投稿日時: 2005-02-04 12:23
じゃんぬねっと です。
低水準イベントである、GotFocus() イベントと、LostFocus() イベントではなく、 Enter() イベントと、Leave() イベントを使わないとまずいでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-02-04 12:51
Enter() イベントと、Leave() イベントを良く理解してませんでしたが、
”じゃんぬねっと”さんの提案方法でないと機能が満たせませんね。 GotFocus() イベントと、LostFocus() イベントだと、 「コンボボックスがドロップダウンされる」という視覚的動作しか変更できないので、 キーボード操作での選択ができません。 [ メッセージ編集済み 編集者: xxななおxx 編集日時 2005-02-04 12:55 ] [ メッセージ編集済み 編集者: xxななおxx 編集日時 2005-02-04 12:56 ] [ メッセージ編集済み 編集者: xxななおxx 編集日時 2005-02-04 13:09 ] | ||||||||
|
投稿日時: 2005-02-04 14:53
じゃんぬねっと です。
ケチつけるような真似して、申し訳ありません。m(_ _)m
それと、Form がアクティブになった際にも発生してしまうので危険ですよね。
フォーカス取得時ではなく、[↓]矢印キーとか別のもので代用した方が、ユーザ フレンドリだと思いますが... それと、Windows 標準が [F4] であることも、ご存知なのでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-24 20:47
(この会議室には不適切との指摘がありましたので削除しました)[ メッセージ編集済み 編集者: Okayu3 編集日時 2006-04-26 14:32 ] | ||||||||
|
投稿日時: 2006-04-25 07:35
視覚テーマ (MSSTYLE) によって「揺らぎ」が発生しうる手法ですね。 ここまでやるのであれば、ウィンドウ メッセージ レベルで見た方が話が早いかもしれません。 個人的には、やはり OS 標準 の [F4] キーを使いましょうというところです。 (アクセシビリティ、ユーザビリティを考慮して) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1|2|3
次のページへ»