コントロールボックスを使ったツールを作っているのですが、コントロールのテキストに世代を選んでくださいというテキストを残したままで、ユーザーにいじられないように、選択しかできないようにしたいのです。過去ログを見ましたがStyleプロパティを2にするなど試しましたが。それではテキストが消えてしまいます。お願いします
Styleプロパティを『2 - ドロップダウンリスト』に設定し、
リストに『世代を選んでください』を先頭に追加して、
選択されたらClickイベント内で強制的に先頭に戻すというのは?
リストの中にも『世代を選んでください』というが表示されてしまう点と
Clickイベント内で強制的に先頭に戻す為、再度Clickイベントが走る点の
2つの問題がありますが。
特に制御の条件とか無いみたいだし、コンボのKeyDownイベントあたりで
If KeyCode <> vbKeyDown And KeyCode <> vbKeyUp Then
KeyCode = 0
End If
とかは?
VB.NETなら
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
これはどうでしょうか?
VB.NETで同じような問題にぶつかっています。
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
で、テキストボックス部分の変更は不可にできますが、リストのプルダウンも
出来ないようにしたいです。良い方法はありますでしょうか?
う〜ん。自己レスで全然綺麗ではありませんが、値を変更前に戻す方法で。。。
Private comIndex As Integer '現在の値を保持
Private comLocked As Boolean = False 'ロックの状態
'LOCKのON/OFF切替
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If comLocked Then
comLocked = False
Else
comLocked = True
End If
End Sub
'LOCK状態なら値を変更させない。(元に戻す)
Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
If comLocked Then
ComboBox1.SelectedIndex = comIndex
End If
End Sub
'GotFocus時に現在の値を保持
Private Sub ComboBox1_GotFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.GotFocus
comIndex = ComboBox1.SelectedIndex()
End Sub
失礼かもしれないのですが、
ちょっと聞きたいことが、
これは解決されたのでしょうか・・・?
私のは解決しました。(もっと良い方法があるかもしれませんが・・・・・・)
としさんは解決したのでしょうか?
よくわからないですが
プルダウンしないのにコンボボックス使う意味があまり感じられないのですが・・・
ならば逆にリストボックスを一行分表示していく方が良いのじゃないでしょうか?
仕様用途が不明なためタコレスだったらスマソ
そういえば、そうですよね。
プルダウンをしたくなければ、
いっそのこと
Enabledでコントロールできないようにしてみてはどうでしょうか?
それでは、だめだっと言うのなら、すみません。
ツイート | ![]() |