- PR -

NotifyIconを左クリックで、コンテキストメニューを表示したい

1
投稿者投稿内容
MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2004-11-22 15:04
Win2000Pro
.NET Framework1.1
VB.NETという環境で開発しております。

ご質問させていただきます。

作成したいプログラムは、formの最小化ボタンを押下した際に、
タクストレイに格納し(formは画面から消す)、タスクトレイのアイコンを左クリックした際にコンテキストメニューを表示させたいのです。
現状、右クリックでコンテキストメニューを表示できるようにしております。

似たような記事がこちらであったのですが、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=7490&forum=7
最小化する際に、formを画面から消しているので、senderパラメータが有効にならないため
エラーとなってしまいます。

どなたか良い対処方法をご存知でしたら、ご教授よろしくお願いいたします。


#ちなみに、画面からformを消す手順は
Application.DoEvents()
ShowInTaskbar = False
Me.Hide()
NotifyIcon1.Visible = True ’タクストレイのアイコン

formを表示する処理は
Me.ShowInTaskbar = True
Me.WindowState = FormWindowState.Normal
Me.Show()

で、それぞれ行っております。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-11-23 10:35
諸農です。

表示したいContextMenuコントロールをNotifyIconコンポーネントの
ContextMenuプロパティにセットするとうまくいかないですね。
表示したいContextMenuはフォームに配置するにとどめて、
NotifyIconのMouseDownで次のように呼び出せばOKです。

コード:
private void notifyIcon1_MouseDown(object sender,
             System.Windows.Forms.MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        this.contextMenu1.Show(this,PointToClient(Cursor.Position));
    }
}



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

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
MI
会議室デビュー日: 2004/09/07
投稿数: 15
投稿日時: 2004-11-24 19:16
諸農様

ご指導いただきありがとうございました。
コードまで書いていただき大変恐縮です。

私の方のFormの表示・非表示のさせ方が悪かったのが大きな原因でした。
Me.Hide()で閉じてしまうと、コンテキストメニューの呼び出し元オブジェクトが無いというようなエラーとなってしまうのですね。

Formを表示させる際は
Me.Opacity = 100
閉じる際は
Me.Opacity = 0
というように、透過プロパティで対応するようにしたら、マウスのクリックイベント(左右のボタンともに)が処理できるようになりました。

どうもありがとうございました。


1

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