- PR -

DetaGridViewのCellのクリックをシミュレートする方法

1
投稿者投稿内容
まちゃん
会議室デビュー日: 2007/06/19
投稿数: 3
投稿日時: 2007-06-19 13:30
はじめまして。 VB.NET初心者です。
DetaGridViewのCellのクリックをシミュレートする方法が分かりません。
よろしくお願いします。

具体的にやりたいことを書きますと、Formに
DataGridViewとPictureBoxとTextBoxを配置しています。
初期状態で、DataGridView.Item(0,0)のイメージがPictureBoxに
表示されています。DataGridView.Item(1,0)が選択状態です。
TextBoxにカーソルがあります。
TextBoxに入力して、Enterを押すと、入力された文字列が
DataGridView.Item(1,0)に表示されて、Cellの選択が
DataGridView.Item(1,1)に移ります。それと同時に、
DataGridView.Item(0,1)のイメージがPictureBoxに表示されます。
カーソルはTextBoxにあります。

今は、DataGridView.Item(1,1)をマウスでクリックすると、Cellの
選択がDataGridView.Item(1,1)に移り、DataGridView.Item(0,1)の
イメージがPictureBoxに表示されるようになっています。

TextBoxでEnterを押したときに、DataGridView.Item(1,1)がクリック
されたように、プログラムで記述したいのですが、上手くいきません。

開発環境は、VB2005です。
よろしくお願いします。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-06-19 14:00
引用:

今は、DataGridView.Item(1,1)をマウスでクリックすると、Cellの
選択がDataGridView.Item(1,1)に移り、DataGridView.Item(0,1)の
イメージがPictureBoxに表示されるようになっています。


現在、これをどうやって実装しているのかわかりませんが、
CurrentCellChanged イベントをハンドルしているのなら、
コードから CurrentCell を変更しても発生しますので、
Cell のクリックをシミュレートするのではなく、
カレントセルを(1, 1)に変更すればいいような気がします。

コード:

DataGridView1.CurrentCell = DataGridView1(1, 1)



そうでないなら、CurrentCell 変更後に、
ピクチャボックスのイメージを差し替える処理を呼び出せばよいでしょう。
まちゃん
会議室デビュー日: 2007/06/19
投稿数: 3
投稿日時: 2007-06-19 14:59
KIさん、早速のレスポンス、ありがとうございます。

引用:

現在、これをどうやって実装しているのかわかりませんが、
CurrentCellChanged イベントをハンドルしているのなら、



CellClickやCellEnterやSelectionChangedのイベントを
ハンドルしていました。
CellClickのイベントハンドルで、マウスでクリックした
ときは、上手く動作していましたので、Cellのクリック
のシミュレーションばかり考えていました。

コード:

DataGridView1.CurrentCell = DataGridView1(1, 1)



引用:

CurrentCell 変更後に、
ピクチャボックスのイメージを差し替える処理を呼び出せばよいでしょう。



この方法で上手く行きそうです。
どうもありがとうございました。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-06-19 15:46
引用:

まちゃんさんの書き込み (2007-06-19 14:59) より:
CellClickやCellEnterやSelectionChangedのイベントを
ハンドルしていました。


蛇足かも知れませんが、念のため付け足しておきます。

DataGridView はマウスクリックだけではなく、
キーボード操作でも、カレントセルを移動できます。
(矢印キー, Enter, Tabなど)

また、SelectionChanged などで扱う選択されたセルは、
カレントセルとは別の概念です。
(カレントセルは常に1つですが、選択されたセルは複数になることがあります)

その辺りを考慮して、適切な1つのイベントを
ハンドルする方向で考えたほうがよいと思います。
まちゃん
会議室デビュー日: 2007/06/19
投稿数: 3
投稿日時: 2007-06-20 10:51
KIさん、アドバイスどうもありがとうございます。

引用:

KIさんの書き込み (2007-06-19 15:46) より:
また、SelectionChanged などで扱う選択されたセルは、
カレントセルとは別の概念です。
(カレントセルは常に1つですが、選択されたセルは複数になることがあります)



ハンドルするイベントが適当でないため、どうも理解不能な動きを
していました。
イベントにつきましては、思い込みで使わないようにします。
1

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