- - PR -
ラジオボタンを選択不可に
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-22 14:44
それより Items が空というのは選択中のアイテムが見れないということですから、まずくないでしょうか? Select した 1 件のみ残すという意味だとは思いますが。 あとは DropDown させたくないが外観は変えたくない (実際にあった要望w) となるとどの方法も難しいですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-09-22 14:51
さかもとです。
アイテムを照会のときに1つを残して全部クリアすれば・・・、と思いましたが、1アイテムでもドロップダウンは出来てしまいますよね・・・。 それもダメで、しかも標準コントロールで、となると・・・。 1:仕様を見直す 2:ぼのぼのさんの「imageにしてしまう」案 でしょうか? _________________ ------------------------------------------ 拝啓、さかもとと申します♪ | ||||
|
投稿日時: 2007-09-22 15:15
> 例えば照会の処理区分であればコンボボックスは表示するだけであって
> ドロップダウンさせたくないのです。 そのような場合、選択項目を 1 つにするのが一般的だと思います。 *私の知る限り*、通常のアプリで Enabled なのにドロップダウンできない ComboBox は見たことがありません。技術的にはおもしろそうですけど。 | ||||
|
投稿日時: 2007-09-22 17:21
みなさん、大変丁寧な回答ありがとうございました。
| ||||
|
投稿日時: 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-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でもマウスイベントのロックは同じ事をやってる ハズだと思うんだけどな・・・ |