2017-04-19 22 views
0

以下のように、私のrichTextBox1をマウスで残しておくと、それを隠す必要があります。これでうまくいきますが、コンテキストメニューを右クリックして開くと、プログラムも隠れてしまいますので、うまくいきます。しかし、私はそれを望んでいないので、私はContextMenu.isOpen()を使用する方法を説明するMSDNでこのページを見つけましたが、Visual Studioでは動作しません。それがなかった場合はVisual StudioでContextMenu.isOpenが見つからない

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
    { 
     this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
    } 

私はそうのようにそれを行うだろう:

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
    { 
     if(!richTextBox1.ContextMenu.isOpen()){ 
      this.WindowState = FormWindowState.Minimized; 
      this.ShowInTaskbar = false; 
     } 
    } 

私は、関数の使い方を誤解午前、またはマイクロソフトが存在しない機能を文書化することは正常ですか?

私はそれを働かせるか、それと似たようなことを手伝ってもらえますか?

+0

参照...参照が –

+0

'ContextMenu.isOpenは()' WPFのContextMenuです欠落しているか、されていないチェクしてみてください。 winformsまたはWPFをコーディングしていますか? – Pikoh

+0

どのように参照を見つけることができます、MSDNはそれがの一部だと言います。コンテクストマンを使うことさえ私にはロードされるはずです。 名前空間:System.Windows.Controls アセンブリ:PresentationFramework(PresentationFramework.dll) –

答えて

0

Winforms ContextMenuにはisOpenというプロパティがありません。できることは、そのPopupCollapseイベントを購読し、プライベート変数を使用してContextMenuステータスを保存することです。このような何か:

まず、ブール変数を宣言:

private bool isContextMenuOpen; 

次に、フォームのコンストラクタでの(あるいは私たちはRichTextBoxContextMenuを追加した後)私たちは、イベントをサブスクライブ:

public Form1() 
{ 
    InitializeComponent(); 
    //Popup event is raised when the contextmenu is shown 
    this.richTextBox1.ContextMenu.Popup += ContextMenu_Popup; 
    //Collapse event is raised when the contextmenu is hiding 
    this.richTextBox1.ContextMenu.Collapse += ContextMenu_Collapse; 
} 

イベントハンドラ:

private void ContextMenu_Collapse(object sender, EventArgs e) 
{ 
    this.isContextMenuOpen = false; 
} 

private void ContextMenu_Popup(object sender, EventArgs e) 
{ 
    this.isContextMenuOpen = true; 
} 

次に、あなたのコードこのようなものになるだろう:行方不明

private void richTextBox1_MouseLeave(object sender, EventArgs e) 
{ 
    if(!this.isContextMenuOpen){ 
     this.WindowState = FormWindowState.Minimized; 
     this.ShowInTaskbar = false; 
    } 
} 
+0

ありがとうございます。私はそれを稼働させることができるかどうか試してみるでしょう。私は拡張メソッドを作る方法やそれが何を呼ぶかを学ばなければならないでしょう。しかし、私はとにかくそれを学ぶ必要があります。私は一度それに触れた後、私はあなたに戻ってきます、少し。 –

+0

これはうまくいきます。 ContextMenuの上にマウスを置くと、ウィンドウが閉じることはありません。唯一の問題は、ContextMenuを閉じるときにマウスがどこにあってもウィンドウが最小限になることです。 –

+0

後でいくつかの変更があり、今すぐ動作します。お手伝いありがとう。そして、C#woksの仕組みについて多くのことを教えてくれました。 –

関連する問題