C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[2]: DataGridView・セル編集時の矢印キー
(過去ログ 20 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 4 記事 (1 - 4 表示)] <<
0
>>
■8345
/ inTopicNo.1)
DataGridView・セル編集時の矢印キー制御方法
▼
■
□投稿者/ アリパパ
(5回)-(2007/09/28(Fri) 09:15:27)
分類:[C#]
皆様、お世話になります。
開発環境:VS2005 C# WinXP Pro
早速ですが、質問があります。
DataGridViewの編集時は、テキストBOXが出現し、このコントロールにて
編集を行いますが、例えばセルに「123」というデータが存在し、キャレ
ットが1の左、又は3の右に表示されている際に、矢印キーを押下すると、
カレントセルが左右のセルに移ってしまいます。この動作を制御したいの
ですが、何か関連情報や方法をご存知の方がいらっしゃいましたら、ご教
授頂けます様、お願いします。
セルが編集状態になった際に、DataGridViewのテキストBOXを取得し、Key
Pressイベントを宣言して、矢印キー押下の取得を考えましたが、矢印キー
の場合、KeyPressイベントが発生しない為、対応出来ませんでした。
引用返信
編集キー/
編集
■8348
/ inTopicNo.2)
Re[1]: DataGridView・セル編集時の矢印キー
▲
▼
■
□投稿者/ @echo
(10回)-(2007/09/28(Fri) 10:36:06)
2007/09/28(Fri) 11:42:49 編集(投稿者)
■
No8345
(アリパパ さん) に返信
> カレントセルが左右のセルに移ってしまいます。この動作を制御したいの
> ですが、何か関連情報や方法をご存知の方がいらっしゃいましたら、ご教
> 授頂けます様、お願いします。
キー入力自体は、
その1: Form の ProcessCmdKey で処理する。
その2: Form の KeyPreview を true にして Form の KeyDown/Up イベントで処理する。
どちらでも可能だと思います。
ただし、矢印キーによる編集終了時は KeyDown は発生せず、
KeyUp のみ発生するようなので、ProcessCmdKey で
処理することになると思います。
P.S. こちらの方法でもできるようです。
http://dobon.net/vb/dotnet/datagridview/textboxevent.html
キャレット位置を取得する方法が分からなかったので
少し調べてみると、dataGridView1.EditingControl で
取得できるようですね。
引用返信
編集キー/
編集
■8394
/ inTopicNo.3)
Re[2]: DataGridView・セル編集時の矢印キー
▲
▼
■
□投稿者/ y4yama
(30回)-(2007/09/28(Fri) 16:11:47)
■
No8348
(@echo さん) に返信
> ただし、矢印キーによる編集終了時は KeyDown は発生せず、
> KeyUp のみ発生するようなので、ProcessCmdKey で
> 処理することになると思います。
勉強中の者です。@echo さんの方法でトライしてみました
DataGridView1_CellValidating()のタイミングで(e.Cancel = Trueとすると、KeyUp も発生しないですが)
うまくフラグ判断したら、キャレット位置は全く知る必要なく、実現できた感じです
(ありがとうございました)
引用返信
編集キー/
編集
■8410
/ inTopicNo.4)
Re[2]: DataGridView・セル編集時の矢印キー
▲
▼
■
□投稿者/ アリパパ
(7回)-(2007/09/28(Fri) 18:45:13)
@echo様、お世話になっております。
下記アドバイス、有難うございました。
> キー入力自体は、
>
> その1: Form の ProcessCmdKey で処理する。
> その2: Form の KeyPreview を true にして Form の KeyDown/Up イベントで処理する。
>
> どちらでも可能だと思います。
FormのProcessCmdKeyをオーバーライドして、矢印キーの押下を取得出来ました。
DataGridViewのTextBoxCellは、dataGridView1のEditingControlShowingで取得
しておき、矢印キーが押下された際に、TextBoxCell内のキャレット位置により、
キー操作を無効化する事で、セルの移動を制御する事が出来ました。
ご教授感謝致します。今後とも宜しくお願い致します。
PS:y4yama様、ご協力有難うございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-