- PR -

Leave イベントが発生しない?.NETの仕様?

投稿者投稿内容
ina
ベテラン
会議室デビュー日: 2005/04/14
投稿数: 58
投稿日時: 2006-03-06 09:42
引用:

じゃんぬねっとさんの書き込み (2006-03-06 09:07) より:
とりあえず、取り急ぎ作ったものです。
暫定版ということで、取り扱いには注意してください。

  ReadOnlyComboBox クラス

EditBox に対しての対応 (コンテキスト メニューなど) はかなり端折ってあります。
あくまでイメージということで見ていただければ、と思います。


早速、みんなに教えてあげたいと思います。
どうもありがとうございました。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-03-06 12:29
Combobox が ReadOnly = true の時、上に TextBox を載せる手もあるかもしれませんが、逆転の発想?で、コンボボックスの「▼」ボタンを非表示にするのじゃダメなのかな?

あと、キー入力の無視で結構苦心する傾向があるようですが、見た目そのままでキー入力を防御したいなら、対象のコントロールの上に(SDK的な意味において)透明なウィンドウを貼ってしまえばいいんじゃないでしょうか。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-06 18:21
引用:

渋木宏明(ひどり)さんの書き込み (2006-03-06 12:29) より:

あと、キー入力の無視で結構苦心する傾向があるようですが、見た目そのままでキー入力を防御したいなら、対象のコントロールの上に(SDK的な意味において)透明なウィンドウを貼ってしまえばいいんじゃないでしょうか。


これだけであるならば、無条件に Key を排除しちゃうだけで可能です。
問題なのは、コピー (部分コピーも含む) とかそのあたりの関係でしょうね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-07 06:20
引用:

じゃんぬねっとさんの書き込み(2006-03-06 09:29)より:

同名のを検索したら、何かあったし... orz

  Read only ComboBox - The Code Project - Combo & Listboxes

ちょっと違うけど...


 そのコメントの「Another approach for a ReadOnly ComboBox」に、TextBox 張り替え版がありますね。
 DropDownList Style のときに、左右の矢印キーも対応しなきゃならん、と書いてあります。じゃんぬさんのコードにはそれが無いように思いますが、大丈夫ですか?
コード:
if ( this.ReadOnly && 
   ( e.KeyCode == Keys.Up || 
     e.KeyCode == Keys.Down || 
     e.KeyCode == Keys.Delete ||
     Keys.PageUp == e.KeyCode || 
     Keys.PageDown == e.KeyCode || 
     Keys.F4 == e.KeyCode ))
  e.Handled = true;
else if ( this.ReadOnly && 
        (( Keys.Left == e.KeyCode ) || ( Keys.Right == e.KeyCode )) &&
          this.DropDownStyle == ComboBoxStyle.DropDownList )
  e.Handled = true;
else
  base.onkeydown( e );



 しかし、この The Code Project のコントロール、Height を 21 と決めつけるのは良くないなぁ。解像度やフォントサイズをデフォルトから変更されると、切れちゃいますよ。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-07 09:26
引用:

Jittaさんの書き込み (2006-03-07 06:20) より:

DropDownList Style のときに、左右の矢印キーも対応しなきゃならん、と書いてあります。
じゃんぬさんのコードにはそれが無いように思いますが、大丈夫ですか?


DropDownStyle を変えてのテストをやっている時間がなかったので、入ってないですね。
気づいた時に更新しておきます。(一応、暫定と謡っているので気楽にやろうかと思います)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-07 09:41
...と思ったのですが、Selectable を外しているので、
DropDownList の場合は問題なさそうですね。

DropDownList の場合は、標準の動作でもコピーしないので自然だと思います。
フォーカスが取得できなくなるという点では ReadOnly ではなくなるかもしれません。
でも、フォーカスを取得するとハイライト表示されちゃうので、それはそれで違和感があります。

バグもあるでしょうから、改変はご自由におながいします。

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

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