- - PR -
ラジオボタンを選択不可に
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-21 17:04
こんにちは。
VB2005の、ラジオボタン、チェックボックス、コンボボックスで 「テキストボックスのReadOnly + TabStopみたいに 表示はそのままで、Tabでもフォーカスが来ない」 みたいなことはできますか? ラジオボタン、チェックボックスはPanelのなかです。 Enableだと薄くなってしまいますし・・・ コンボボックスはDropDownStyleをSimpleにして ドロップダウンできないようにするとか思ったのですが。 何かよい方法ありませんか? 宜しくお願いします。 | ||||
|
投稿日時: 2007-09-21 22:05
意味が良く分からないですが、Tab でもフォーカスが来ないのは TabStop = false でできますね。 マウスクリックなどでも状態が変更されないという 意味であれば、CheckBox, RadioButton は、 AutoCheck = flase ComboBox は、 KeyDown, KeyPress で e.Handled = true MouseDown で comboBox1.Capture = false でそれなりに動くような気がします。 ComboBox は少し怪しいですが... | ||||
|
投稿日時: 2007-09-22 10:46
@echoさん、ありがとうございます。
ラジオボタン、チェックボックスは AutoCheck = flase で解決しました。 コンボボックスは、イベントに書くのではなく 選択(ドロップダウンしない)できないように したいのです。 宜しくお願いします。 | ||||
|
投稿日時: 2007-09-22 11:56
さかもとと申します。
いまいち、ご希望の動作が分かりかねますが・・・。
つまり、見た目はコンボボックスとして表示させるけど、コンボボックスが本来持っている動作は一切させない、ということでしょうか? _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2007-09-22 12:26
ComboBox をきちんとやるなら、
Enabled = false DrawMode = OwnerDrawFixed にして、DrawItem で描画すれば、アクションは 受け付けなくなりますが、イベント使用はダメなんですよね。 当然メッセージ処理も... 透過コントロールがあれば一番いいのでしょうが、 イベントなしで実現する方法はちょっと分かりません。m(_._)m | ||||
|
投稿日時: 2007-09-22 13:28
さかもとさん、ありがとうございます。
見た目はコンボボックスとして表示させるけど、コンボボックスが本来持っている動作は一切させない、ということでしょうか? その通りです、処理区分に応じて 例えば照会の処理区分であればコンボボックスは表示するだけであって ドロップダウンさせたくないのです。 また処理区分が新規入力であれば、ドロップダウンさせて選択できるように したいのです。 @echoさん、ありがとうございます。 C#,VB.NET入門のサイトに 読み取り専用のComboBoxを作成する と載っていましたが、やはり標準のコントロールでは 難しいのでしょうか? | ||||
|
投稿日時: 2007-09-22 14:20
方法1:直接入力不可にしつつItemsの中身を退避させてClearしてしまう。 方法2:同じPositionにItemsが空のコンボボックスを用意しといて、Visibleで切り替える 方法3:Visibleで切り替えるのは一緒だが、入力不可バージョンはImageにしてしまう(笑) 方法1と2はチェックボックスやラジオボタンでは使えない。 方法3はXPスタイルとクラシックスタイルの表示の違いの問題がある。 どれも完璧ではないっすね… | ||||
|
投稿日時: 2007-09-22 14:39
難しいというか面倒くさいです。 面倒なことをわざわざする必要はありません。 正直なことを言えば、あのコントロールはプロパティで実装したいという要望で適当に拡張しただけだったりします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |