DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridのフォーカスが発生しない

環境/言語:[XP、VB.NET]
分類:[.NET]

DataGridで簡単な入力表を作っています。
Cell1(コード入力)Cell2(商品名称を表示)Cell3(売価を表示)Cell4(数量を入力)Cell5(価格を表示)

GotFocusでフォーカスが移動後、Cell1に入力されたコードから商品名、売価を所得し、セル2、セル3に表示する。
ところが、TabでCell1からCell2に移動してもGotFocusに入ってきません。
どうも、入力不可のCell2、3の移動のタイミングにしかGotFocusに入ってこない事が判明

Tab移動でも、GotFocusで値を捕まえられるようにするには、どうすれば良いでしょうか?
LostFocusも似たり寄ったりで使えません。

そもそもGotFocus内でデータを所得し表示しているのがいけないのでしょうか?
■No21874に返信(makさんの記事)
.NET になってから GotFocus は使わないですねぇ。
[Control.GotFocus イベント]
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.gotfocus(VS.80).aspx
解説にありますが、Enter イベントが用意されています。

それはさておき、入力不可は非アクティブなのと同じなのでフォーカス受け取らないっていう
解釈も成り立つんじゃないでしょうか?
# いま、[VB.NET2003]で動作確認したら、見た目は思いっきりフォーカスしてますがw

セルが移動したんだから、そのまんまな DataGrid.CurrentCellChanged イベントが
ありますが、これを使えない理由があるのでしょうか?
> 解説にありますが、Enter イベントが用意されています。

こちらもテストしましたが、イベントが起きてこない?
書き方がおかしいのかな?
Private Sub MyDataGrid_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyDataGrid.Enter

Console.WriteLine("GotFocus Row:(" & Str(sender.currentcell.rownumber) & ") Col:(" & Str(sender.currentcell.columnNumber) & ") Inputコード:" & MyDataGrid.Item(sender.currentcell.rownumber, 0))

End Sub

> セルが移動したんだから、そのまんまな DataGrid.CurrentCellChanged イベントが
> ありますが、これを使えない理由があるのでしょうか?

Cell2(商品名称を表示)Cell3(売価を表示)を表示した時点で、再度呼ばれるの為、入力値が消えてしまうまったり、なぜかTabで動かなくなる。

DOBON.NET | プログラミング道 | プログラミング掲示板