C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: datagridviewのcellについて。


(過去ログ 31 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■14712 / inTopicNo.1)  datagridviewのcellについて。
  
□投稿者/ しほちゃん★ (24回)-(2008/02/26(Tue) 10:15:19)

分類:[VB.NET/VB2005] 

環境 vb2005 windowsアプリケーション

いつもお世話になっております。
しほ★です。

datagridのcellLeaveイベントに以下のソースをかきました。

Private Sub EnterTabgrdList_CellLeave(ByVal sender As Object, ByVal e As_ System.Windows.Forms.DataGridViewCellEventArgs) Handles EnterTabgrdList.CellLeave

'今の行と列を取得

Dim pos As Point = Me.EnterTabgrdList.CurrentCellAddress
Dim currentRow As Integer = pos.Y
Dim currentColumn As Integer = pos.X

Select Case currentColumn
   Case 1

Case 2
**********
end select
end sub

datagridに値を入力する時(3列目なので0.1.2のcurrentcolumnは2)
  ********の処理は正常に流れます。

しかしデータベースから値をSELECT分でもってきた場合
2列目のcellLeaveイベントで*******がはしってしまします。
本来ならcase1の処理をするはずなのですがcurrentcolunmの0がなくなってずれてしまいます。
どういったことがかんがえられますか?
Currentcellchangeイベントもためしたのですが同じでした。
宜しくお願いいたします。
引用返信 編集キー/
■14734 / inTopicNo.2)  Re[1]: datagridviewのcellについて。
□投稿者/ まどか (458回)-(2008/02/26(Tue) 15:31:33)
#Data系とは疎遠なのでそのものについては詳しくないですが。

> datagridのcellLeaveイベントに以下のソースをかきました。
>
> Private Sub EnterTabgrdList_CellLeave(ByVal sender As Object, ByVal e As_ System.Windows.Forms.DataGridViewCellEventArgs) Handles EnterTabgrdList.CellLeave
>
> '今の行と列を取得
>
> Dim pos As Point = Me.EnterTabgrdList.CurrentCellAddress

Enterも含めてLeaveはフォーカスをきっかけとしたイベントです。
Enterは突入した先が、Leaveは離れた元(今まで居た)がイベントの主体です。

Leaveは離れたという事象のみを表しており、「どこへ」という概念は無く、また「どこかへ行った」という確定事象も保証されない(と思ったほうがよい)です。
したがって、「現在のセル」を求めても「現在の」であるかはわからないはずです。

また、DBうんぬんという条件も書かれていますが、先に言ったようにフォーカスがきっかけのイベントですので
イベントと処理で事象とそのタイミングでやるべきことがマッチするように
極力そこに不確定要素(〜なるはずだ)を持ち込まないようにしたほうがよいでしょう。


とりあえず、あたりをつけたイベントにConsole.WriteLine等を仕込んで値を確認して、イベント間の規則性を把握してはどうでしょうか。
引用返信 編集キー/
■14741 / inTopicNo.3)  Re[2]: datagridviewのcellについて。
□投稿者/ しほちゃん★ (26回)-(2008/02/26(Tue) 16:35:17)
No14734 (まどか さん) に返信

> Leaveは離れたという事象のみを表しており、「どこへ」という概念は無く、また「どこかへ行った」という確定事象も保証されない(と思ったほうがよい)です。
> したがって、「現在のセル」を求めても「現在の」であるかはわからないはずです。
>

飛んだ先はもとめていないのです。「どこへ」ではなくて「どこから」のセルを求めています。
Leaveイベントに関係なくdetagridのcolumnの値をみてみたのですが通常0からはじまるとおもうのですが
1からはじまってしまいます。

ご回答ありがとうございました。また宜しくお願いいたします。
引用返信 編集キー/
■14742 / inTopicNo.4)  Re[3]: datagridviewのcellについて。
□投稿者/ やじゅ (186回)-(2008/02/26(Tue) 16:41:10)
No14741 (しほちゃん★ さん) に返信

CellLeave イベント内であれば、e.ColumnIndex, e.RowIndex を使いましょう。

引用返信 編集キー/
■14743 / inTopicNo.5)  Re[4]: datagridviewのcellについて。
□投稿者/ しほちゃん★ (27回)-(2008/02/26(Tue) 17:05:44)
No14742 (やじゅ さん) に返信
> ■No14741 (しほちゃん★ さん) に返信
>
> CellLeave イベント内であれば、e.ColumnIndex, e.RowIndex を使いましょう。
>
   はい。NULLの場合があるのですね。
   ご指摘ありがとうございます。 ☆ ★



引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -