- PR -

ラジオボタンを選択不可に

投稿者投稿内容
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-21 17:04
 こんにちは。

VB2005の、ラジオボタン、チェックボックス、コンボボックスで

「テキストボックスのReadOnly + TabStopみたいに
 表示はそのままで、Tabでもフォーカスが来ない」

みたいなことはできますか?

ラジオボタン、チェックボックスはPanelのなかです。

Enableだと薄くなってしまいますし・・・

コンボボックスはDropDownStyleをSimpleにして
ドロップダウンできないようにするとか思ったのですが。


何かよい方法ありませんか?
宜しくお願いします。
@echo
会議室デビュー日: 2005/01/19
投稿数: 18
投稿日時: 2007-09-21 22:05
引用:
「テキストボックスのReadOnly + TabStopみたいに
 表示はそのままで、Tabでもフォーカスが来ない」


意味が良く分からないですが、Tab でもフォーカスが来ないのは
TabStop = false でできますね。

マウスクリックなどでも状態が変更されないという
意味であれば、CheckBox, RadioButton は、

AutoCheck = flase

ComboBox は、

KeyDown, KeyPress で e.Handled = true
MouseDown で comboBox1.Capture = false

でそれなりに動くような気がします。
ComboBox は少し怪しいですが...
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-22 10:46
@echoさん、ありがとうございます。

ラジオボタン、チェックボックスは
AutoCheck = flase で解決しました。

コンボボックスは、イベントに書くのではなく
選択(ドロップダウンしない)できないように
したいのです。

宜しくお願いします。

さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-09-22 11:56
さかもとと申します。

いまいち、ご希望の動作が分かりかねますが・・・。

引用:

コンボボックスは、イベントに書くのではなく選択(ドロップダウンしない)できないようにしたいのです。



つまり、見た目はコンボボックスとして表示させるけど、コンボボックスが本来持っている動作は一切させない、ということでしょうか?




_________________
------------------------------------------
拝啓、さかもとと申します♪
@echo
会議室デビュー日: 2005/01/19
投稿数: 18
投稿日時: 2007-09-22 12:26
ComboBox をきちんとやるなら、

Enabled = false
DrawMode = OwnerDrawFixed

にして、DrawItem で描画すれば、アクションは
受け付けなくなりますが、イベント使用はダメなんですよね。
当然メッセージ処理も...

透過コントロールがあれば一番いいのでしょうが、
イベントなしで実現する方法はちょっと分かりません。m(_._)m
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-22 13:28
さかもとさん、ありがとうございます。

見た目はコンボボックスとして表示させるけど、コンボボックスが本来持っている動作は一切させない、ということでしょうか?

その通りです、処理区分に応じて
例えば照会の処理区分であればコンボボックスは表示するだけであって
ドロップダウンさせたくないのです。
また処理区分が新規入力であれば、ドロップダウンさせて選択できるように
したいのです。


@echoさん、ありがとうございます。

C#,VB.NET入門のサイトに
読み取り専用のComboBoxを作成する

と載っていましたが、やはり標準のコントロールでは
難しいのでしょうか?


ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-09-22 14:20
引用:

なびさんの書き込み (2007-09-22 13:28) より:
さかもとさん、ありがとうございます。

見た目はコンボボックスとして表示させるけど、コンボボックスが本来持っている動作は一切させない、ということでしょうか?

その通りです、処理区分に応じて
例えば照会の処理区分であればコンボボックスは表示するだけであって
ドロップダウンさせたくないのです。
また処理区分が新規入力であれば、ドロップダウンさせて選択できるように
したいのです。


方法1:直接入力不可にしつつItemsの中身を退避させてClearしてしまう。
方法2:同じPositionにItemsが空のコンボボックスを用意しといて、Visibleで切り替える
方法3:Visibleで切り替えるのは一緒だが、入力不可バージョンはImageにしてしまう(笑)

方法1と2はチェックボックスやラジオボタンでは使えない。
方法3はXPスタイルとクラシックスタイルの表示の違いの問題がある。

どれも完璧ではないっすね…
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-22 14:39
引用:

なびさんの書き込み (2007-09-22 13:28) より:

C#,VB.NET入門のサイトに
読み取り専用のComboBoxを作成する

と載っていましたが、やはり標準のコントロールでは
難しいのでしょうか?


難しいというか面倒くさいです。 面倒なことをわざわざする必要はありません。 正直なことを言えば、あのコントロールはプロパティで実装したいという要望で適当に拡張しただけだったりします。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)