- PR -

ContextMenuStripに関して

投稿者投稿内容
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-01-16 14:55
VB.NET2005にて

@DataGridViewで右クリック選択した行をSelected状態にし、
その状態でAContextMenuを出したいと思っています。
(Excelのような感じです)

調べたところ
@に関してはCellMouseClickで選択Indexをとる方法で対応が出来ました。
Aの方法に関してもDataGridViewプロパティContextMenuStripに設定することで
できたのですが、
個別に設定するとうまくいくのですが@、Aを両方実装するとAしか稼動しません。

両方実装は出来ないのでしょうか?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2007-01-16 15:12
プロパティには設定せずに、右クリックのイベント時に ContextMenuStrip の Show メソッドを使用して表示するようにすればいいでしょう。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-01-16 17:49
ありがとうございます。
仰る方法でできたのですが、ContextMenuStrip がでる位置が
設定がうまくできませんでした。

以下のような事を試してみたのですが、
どれも、ContextMenuStripのみを実装したときのようにカーソルの近くに出ずに
かなり遠くに しかも行を変更しても出る位置が変わりませんでした。。。

.show(e.x, e.y)
.show(DataGridView, e.x, e.y)
.show(e.Location.x, e.Location.y)
.show(DataGridView, e.Location.x, e.Location.y)
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-16 19:20
引用:

Kiraさんの書き込み (2007-01-16 17:49) より:

どれも、ContextMenuStripのみを実装したときのようにカーソルの近くに出ずにかなり遠くに しかも行を変更しても出る位置が変わりませんでした。。。


どのコントロールの、どのイベントに書いて、どれを親コンテナとして ContextMenuStrio を表示していますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2007-01-17 00:02
引用:

どれも、ContextMenuStripのみを実装したときのようにカーソルの近くに出ずに
かなり遠くに しかも行を変更しても出る位置が変わりませんでした。。。


取得した座標と与える座標のそれぞれが
「スクリーン座標」なのか「クライアント座標」なのかを確認してください。
そして必要に応じてPointTo〜メソッドで変換してください。
Kira
ぬし
会議室デビュー日: 2004/10/30
投稿数: 252
投稿日時: 2007-01-17 15:52
Control.MousePositionをShowの引数に渡すことで
成功しました。

有難う御座いました。
island_town
ベテラン
会議室デビュー日: 2007/05/08
投稿数: 77
投稿日時: 2008-07-19 07:58
MousePosition?そのようなプロパティが見つからないのですが
どのクラスのプロパティか説明していただけませんか?

調べてみたらこんなページを見つけました。
http://okwave.jp/qa2740989.html

位置を渡すとき
contxtmenuStrip.Left - this.dataGridView1.Left - this.dataGridView1.RowHeaderWidth - this.Left
Topも同じ
と計算すると良いようです。

意図が違っていたらごめんなさい。


[ メッセージ編集済み 編集者: island_town 編集日時 2008-07-19 08:06 ]
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2008-07-19 15:58
引用:

island_townさんの書き込み (2008-07-19 07:58) より:
MousePosition?そのようなプロパティが見つからないのですが
どのクラスのプロパティか説明していただけませんか?



staticなプロパティのようです。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.mouseposition.aspx

説明から察するところスクリーン座標ぽいですね。

[追記]
誤読しました。クライアント座標っぽいですね。

[ メッセージ編集済み 編集者: GENZO 編集日時 2008-07-19 16:00 ]

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