- PR -

ContextMenuからMenuItem.Clickイベントがおきない

1
投稿者投稿内容
うりぼう
会議室デビュー日: 2004/08/25
投稿数: 12
投稿日時: 2005-01-09 20:14
お世話になっています。

-------------------------------------------------------
[OS]Windows2000 Professional SP4
[VS]VisualStudio.NET2003
[言語]VB.NET
-------------------------------------------------------

現在、MSFlexGrid上の右クリックでコンテキストメニューを表示し、
表示メニューのアイテムをクリックすると、
選択に応じた処理を行うようなことをやろうとしています。
(コードは下記参照)

MSFlexGrid上の右クリックでコンテキストメニューを表示することはできるのですが、
表示メニューをクリックしても、MenuItemのClickイベントが走らなくて困っています。
ContextMenu1のアイテムとしてMenuItem1が定義してあり、
名称も間違っていないことも確認しました。
イベントハンドラが抜けていないことも確認しました。
初歩的なミスをしそうなところは一通りチェックしたつもりです。

ごく単純な処理なので質問するのも恥ずかしいのですが、
調べても原因がどうしてもわかりませんでした。

原因のわかる方がいましたら、ご教授ください。
よろしくお願いします。

###########################################################################
'MSFlexGrid上の右クリックでメニューを表示
Private Sub mfgGrid_MouseDownEvent( _
ByVal sender As Object, _
ByVal e As AxMSFlexGridLib.DMSFlexGridEvents_MouseDownEvent _
) Handles mfgGrid.MouseDownEvent

With mfgGrid

If .Rows <= 0 Then Exit Try

'右クリック
If e.button = 2 Then
.Row = .MouseRow
.Col = .MouseCol

'コンテキストメニュー表示
'出力位置がおかしいので調整
Me.ContextMenu1.Show(mfgGrid, _
New Point(.MousePosition.X - 150, .MousePosition.Y - 275))
End If

End With

End Sub

'コンテキストメニューのMenuItem1選択時の処理
Private Sub MenuItem1_Click( _
ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles MenuItem1.Click
Try

'MenuItem1の処理

Catch ex As Exception
Debug.Write("Error: " & ex.Message)
End Try
End Sub

###########################################################################
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-01-09 21:09
諸農です。

MenuItem.ClickイベントにMenuItem1_Clickメソッドが
セットされているかどうかの確認は出来ますか?

また、この現象はMSFlexGrid上だけで発生するものでしょうか?
それとも同じプロジェクトでフォームやその他のコントロール上で
同じコンテキストメニューを表示させても発生しますか?

MSFlexGridを使わない単純な別のプロジェクトで試してみても
同様のことは発生しますか?

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
うりぼう
会議室デビュー日: 2004/08/25
投稿数: 12
投稿日時: 2005-01-10 00:32
回答が遅れて申し訳ありません。
早速のご返信有難うございます。

>MenuItem.ClickイベントにMenuItem1_Clickメソッドが
>セットされているかどうかの確認は出来ますか?

確認の仕方が間違っているかもしれませんが、
コード表示時のWindow上部にある左右のドロップダウンリストで
左のドロップダウンでMenuItem1を選択した状態で、
右のドロップダウンでClickイベントのところみるとClickイベントが
太字になっており、そこを選択するとMenuItem1_Clickメソッドへ
飛びますので問題ないと思います。
もし確認の仕方が間違っていましたらご指摘ください。


>また、この現象はMSFlexGrid上だけで発生するものでしょうか?
>それとも同じプロジェクトでフォームやその他のコントロール上で
>同じコンテキストメニューを表示させても発生しますか?
>
>MSFlexGridを使わない単純な別のプロジェクトで試してみても
>同様のことは発生しますか?

同様の処理をDataGridで行っているところがありますが、
そこでは問題なくイベントが起きています。(同一プロジェクトで)
他のプロジェクトを作成して確認をしてはいませんので、
その確認をしてみます。


また、何かありましたらご指摘ください。

よろしくお願いします。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2005-01-10 02:30
諸農です。

再現できました。

コード:
    Private Sub AxMSFlexGrid1_MouseDownEvent(ByVal sender As Object, ByVal e As AxMSFlexGridLib.DMSFlexGridEvents_MouseDownEvent) Handles AxMSFlexGrid1.MouseDownEvent
        If e.button = 2 Then
            Me.ContextMenu.Show(Me, New Point(e.x, e.y)) 'こっちはOK
            'Me.ContextMenu.Show(CType(sender, AxMSFlexGridLib.AxMSFlexGrid), New Point(e.x, e.y)) 'こっちはダメ
        End If
    End Sub



ContextMenu.Show()に引き渡す所属コントロールをフォームにすると大丈夫のようです。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
うりぼう
会議室デビュー日: 2004/08/25
投稿数: 12
投稿日時: 2005-01-10 14:41
Jubeiさんのコードの通り、所属コントロールをフォームにしてみると
Clickイベントが起こるようになりました。

本当に助かりました。有難うございました。
1

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