- - PR -
DataGridViewのカレントセルの表示位置が知りたい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-04 18:35
DataGridViewのカレントセルの表示位置が知りたいのですがどのような方法があるのでしょうか?
やりたいことはDataGridViewにボタンを表示してそのボタンの位置にあわせてフォームを呼び出して表示を行いたいのです。 | ||||||||
|
投稿日時: 2006-07-04 23:21
ボタンをクリックしたときの画面座標を取りたいって言うことですか?
DataGridView のリファレンスを見ると http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview_properties.aspx MousePosition がそれっぽいですね | ||||||||
|
投稿日時: 2006-07-05 13:30
アドバイスありがとうございます。おっしゃるとおり知りたいのは画面の座標位置です。MousePositionですとマウスのカーソルの位置になってしまうため、キーボードでグリッドを操作していた場合にマウスカーソルがあるとは限らないため無理そうです。
イメージとしてはコンボボックスみたいにセルのすぐ下に画面を開きたいと考えています。 | ||||||||
|
投稿日時: 2006-07-05 14:59
うーん、これでいくかなー 思いっきり間違えている気もする・・・
| ||||||||
|
投稿日時: 2006-07-06 10:00
かるあさん度々ありがとうございます。サンプルで示し
ていただいたコードを試してみました。 グリッドにスクロールが存在しない場合はセルの行と列 分セルサイズを足していって綺麗に表示できたのですが、 スクロールが発生した場合はカレントセルのピクセル単位 の座標位置がわからないため計算できませんでした。 ヘルプ等を参照してもセルが画面上のどこにあるかを判断 するようなプロパティやメソッドを見つけられませんでした。 前に同じようなことを「FlexGrid」という製品を使用して できたので、標準のグリッドできそうなのですがものが違う ので無理なんですかねぇ。 | ||||||||
|
投稿日時: 2006-07-06 10:25
ウォッチで値を眺めていたら
b.AccessibilityObject.Bounds に色々入っているようなのですが、こんな感じでどうでしょうか #Accessibility への参照が必要みたいです [code] -Point bPoint = dgv.PointToScreen(new Point(b.Size)); +Point bPoint = dgv.PointToScreen(new Point(b.AccessibilityObject.Bounds.X, b.AccessibilityObject.Bounds.Y)); [code] | ||||||||
|
投稿日時: 2006-07-06 10:52
大変参考になりました。私がやりたいことは以下のソースで解決しました。
いろいろ調べていただいてありがとうございました。 コード: private void dataGridView1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Enter) { DataGridView dgv = (DataGridView)sender; DataGridViewButtonCell b = (DataGridViewButtonCell)dgv.CurrentCell; Point bPoint = new Point(b.AccessibilityObject.Bounds.X, (b.Size.Height + b.AccessibilityObject.Bounds.Y)); Form SelectForm = null; SelectForm = new Form2(); SelectForm.Location = bPoint; SelectForm.ShowDialog(); } } | ||||||||
|
投稿日時: 2006-07-06 12:30
DataGridView.GetCellDisplayRectangle メソッド なんてどうでしょ。
|
1