.NETチップス
ぶっちゃけメモ帳です。
TextBoxの内容が修正されたかどうか
Modifyプロパティを見る。
Enterキーでフォーカス移動
ProcessTabKey()、SelectNextControl()を使うのがミソ。
KeyDownとKeyPressイベントの違い
イベントの発生する条件(およびKeyを叩いたときの発生する順番)
- KeyDown:Keyが押された
- KeyPress:Keyが押されている
- KeyUp:Keyが放された
KeyDownとKeyPressの違い
- KeyPressイベントはKeyDownイベントがfalseを返した場合発生しない。
- KeyPressイベントはそのキーが押されている間、一定の間隔(OSが定めた間隔)で連続して発生する。
- 受け取るデータ型が違う。
KeyDown(及びKeyPress)イベントはイベントに関するデータを
System.Windows.Forms.KeyEventArgs型で受け取る。
それに対し、KeyPressイベントは
System.Windows.Forms.KeyPressEventArgs型で受け取る。
また、
KeyEventArgs型はKeyAscii(ASCIIコード)でKeyを取得する。
KeyPressEventArgs型はKeyCodeでKeyを取得する。KeyAciiの特徴
- ASCIIコードなので'A'と'a'は区別される。
- 制御Key(Ctrl,Alt,Shift,Delete,Fn,矢印)などを検出できない(ちなみにBackSpaceは文字としてみなされるので検出できる)。
KeyCodeの特徴
- 大文字・小文字の区別がなく、'A'と'a'は同一とみなす。
- 大文字・小文字を区別するにはShiftステータスを参照して判断する。
- IME起動中はKeyDownイベントしか発生しない。
Enterで確定すると、KeyPressイベントが文字数分発生する。
結論:
KeyDownとKeyPressは取得したいKeyで使い分けるのが一般的である。
Visual Studio 2005 Image Library
VisualStudio風のルックアンドフィールドを目指すならVisual Studio 2005 Image Libraryが役に立つ。
中身はツールバーに表示するようなアイコンから、コピー時や通信時に表示するようなアニメーションまで、
VisualStudioで使われているものは一通り入っている模様。
このLibraryはインストールしたフォルダ以下にzip形式で置かれる。
中身はツールバーに表示するようなアイコンから、コピー時や通信時に表示するようなアニメーションまで、
VisualStudioで使われているものは一通り入っている模様。
このLibraryはインストールしたフォルダ以下にzip形式で置かれる。
C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary
DataBindingした際の注意点
EndEdit()を忘れずに
.NET2.0からはDataBindingはBindingSourceを介して行うことがほとんどである。
例えばあるオブジェクトのString型プロパティを、あるTextBoxのTextプロパティにBindingSourceを介してBindingしたとする。
Bindingされているので、フォームからTextBoxの値を変えてやれば、その値は直ちにオブジェクトに反映される。
しかし、コード上でTextBoxのTextプロパティを変えた場合には注意が必要。
このとき、まだBindingSourceが編集状態にあるようで、これをEndEdit()で確定してやらなければ値は反映されない。
DataGridViewやDataRowも同様である。
例えばあるオブジェクトのString型プロパティを、あるTextBoxのTextプロパティにBindingSourceを介してBindingしたとする。
Bindingされているので、フォームからTextBoxの値を変えてやれば、その値は直ちにオブジェクトに反映される。
しかし、コード上でTextBoxのTextプロパティを変えた場合には注意が必要。
このとき、まだBindingSourceが編集状態にあるようで、これをEndEdit()で確定してやらなければ値は反映されない。
DataGridViewやDataRowも同様である。
見えなきゃやらないのと同じ
BindingしたコントロールのVisibleプロパティがfalseだと、どうやらBindingしていることにならないようだ。
見せたくないがBindingはしたいんだって場合は、フォームの枠外に隠すしかないね。
見せたくないがBindingはしたいんだって場合は、フォームの枠外に隠すしかないね。
- Keydown,pressの話で、VBの場合Enterはテンキーと区別されるのはKeyCodeのほうだから、これも使い分けの基準になるかもね -- qutto (2007-04-05 00:38:07)
- つか、なに真面目に仕事してんの? -- qutto (2007-04-05 00:49:14)
- 猛烈にコメントしてくれてるな。 -- NZ-000 (2007-04-05 00:50:28)
- ddd -- ssss (2009-01-13 16:28:58)
添付ファイル