- PR -

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

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-22 14:44
引用:

ぼのぼのさんの書き込み (2007-09-22 14:20) より:

方法1と2はチェックボックスやラジオボタンでは使えない。


それより Items が空というのは選択中のアイテムが見れないということですから、まずくないでしょうか? Select した 1 件のみ残すという意味だとは思いますが。 あとは DropDown させたくないが外観は変えたくない (実際にあった要望w) となるとどの方法も難しいですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2007-09-22 14:51
さかもとです。

アイテムを照会のときに1つを残して全部クリアすれば・・・、と思いましたが、1アイテムでもドロップダウンは出来てしまいますよね・・・。
それもダメで、しかも標準コントロールで、となると・・・。

1:仕様を見直す
2:ぼのぼのさんの「imageにしてしまう」案

でしょうか?


_________________
------------------------------------------
拝啓、さかもとと申します♪
@echo
会議室デビュー日: 2005/01/19
投稿数: 18
投稿日時: 2007-09-22 15:15
> 例えば照会の処理区分であればコンボボックスは表示するだけであって
> ドロップダウンさせたくないのです。

そのような場合、選択項目を 1 つにするのが一般的だと思います。

*私の知る限り*、通常のアプリで Enabled なのにドロップダウンできない
ComboBox は見たことがありません。技術的にはおもしろそうですけど。
なび
ぬし
会議室デビュー日: 2007/08/27
投稿数: 273
投稿日時: 2007-09-22 17:21
みなさん、大変丁寧な回答ありがとうございました。


イワ
会議室デビュー日: 2007/09/22
投稿数: 3
投稿日時: 2007-09-24 22:36
>*私の知る限り*、通常のアプリで Enabled なのにドロップダウンできない
>ComboBox は見たことがありません。技術的にはおもしろそうですけど。

いや、これって常日頃からたくさん目にしてると思いますよ?

デザイナー上での動きがまさにソレ!

ControlDesignerあたりを実行時に使う工夫みたいな方向で考えれば
なんとなくですが「なび」さんの意図してる内容の事は出来そうな気がします・・・・
(と言っても私が具体的なやり方を知ってるワケではないです(^^;)

試しに実行時にControlDesignerでInitializeメソッドにコントロールを
渡してみるテストみたいな事はしてみたんですが・・・
Initializeメソッドは通ってもコントロールにマウスを近づけた瞬間に
エラーが出てしまいました(^^;;

たぶんInitializeの他にもなにか手順を踏まないといけないんでしょう・・・
ちなみにInitializeExistingComponentやInitializeNewComponentあたりも
試してはみたんですがダメでした・・・

デザイナーがらみの技術的情報をお持ちの方に是非この辺の仕組みを
教えて貰いたいところです・・・




[ メッセージ編集済み 編集者: イワ 編集日時 2007-09-24 22:43 ]

[ メッセージ編集済み 編集者: イワ 編集日時 2007-09-24 22:44 ]

[ メッセージ編集済み 編集者: イワ 編集日時 2007-09-24 22:45 ]
イワ
会議室デビュー日: 2007/09/22
投稿数: 3
投稿日時: 2007-09-25 11:04
私が個人的に知りたいのはデザイナー方面からの切り口なんですけど
「なび」さんが実現したい内容であればこうすればいいという方法は
知ってます。要はフォーカスロックとマウスイベントロックがしたい
ワケですよね?

だったら↓のようにしてSelectable=False, MouseEventLock=True

因みにComboBoxの機能はそのままなのでコーディングによるFocus
メソッドでのフォーカス移動は受け付けます。KeyEventはロック
してないので意図的にフォーカスを渡してやれば当然キー操作は受け
付けます。但し意図的にフォーカスを渡しさえしなければマウスから
もキーからも何も出来ないと思います。

RadioButtonも同じ方法が使えます。というより殆どのコントロールで
同じ方法が使えます。

KeyEventもロックすれば完全なReadOnlyプロパティの実装も可能だと
思うので試してみてください。


'--------------------------------------------------------------
Public Class MyComboBox
Inherits ComboBox

Private _MouseEventLock As Boolean

<Category("Focus"), _
Description("フォーカス保持可能か否かを設定します。")> _
Public Property Selectable() As Boolean
Get
Return MyBase.GetStyle(ControlStyles.Selectable)
End Get
Set(ByVal value As Boolean)
MyBase.SetStyle(ControlStyles.Selectable, value)
End Set
End Property

<Category("Mouse"), _
Description("マウスイベントを受け付けるか否かを設定します。")> _
Public Property MouseEventLock() As Boolean
Get
Return Me._MouseEventLock
End Get
Set(ByVal value As Boolean)
Me._MouseEventLock = value
End Set
End Property

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Const WM_NCHITTEST As Integer = &H84
Select Case m.Msg
Case WM_NCHITTEST
If (Not Me.DesignMode) AndAlso Me._MouseEventLock Then
m.Result = 0
Return
End If
End Select
MyBase.WndProc(m)
End Sub
End Class
'--------------------------------------------------------------


たぶんControlDesignerでもマウスイベントのロックは同じ事をやってる
ハズだと思うんだけどな・・・

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