ContextMenu.isOpen 在 Visual Studio 中缺失
ContextMenu.isOpen is missing in Visual Studio
正如您在下面看到的,当我用鼠标离开我的 richTextBox1 时,它应该被隐藏。现在这工作正常,但是当我右键单击并打开上下文菜单时,程序也会隐藏,这很好,因为它应该。但我不想这样,所以我在 MSDN 上找到了这个页面,解释了如何使用 ContextMenu.isOpen() 但它在 Visual studio.
中不起作用
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;
}
}
是我误解了函数的使用方法,还是微软记录不存在的函数是正常的?
你能帮我让它工作或做类似的事情吗?
Winforms ContextMenu
没有 isOpen
属性。您可以做的是订阅它的 Popup
和 Collapse
事件并使用私有变量来保存 ContextMenu 状态。像这样:
首先我们声明一个布尔变量:
private bool isContextMenuOpen;
然后,在表单的构造函数中(或者在我们将 ContextMenu
添加到 RichTextBox
之后)我们订阅事件:
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;
}
}
正如您在下面看到的,当我用鼠标离开我的 richTextBox1 时,它应该被隐藏。现在这工作正常,但是当我右键单击并打开上下文菜单时,程序也会隐藏,这很好,因为它应该。但我不想这样,所以我在 MSDN 上找到了这个页面,解释了如何使用 ContextMenu.isOpen() 但它在 Visual studio.
中不起作用 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;
}
}
是我误解了函数的使用方法,还是微软记录不存在的函数是正常的?
你能帮我让它工作或做类似的事情吗?
Winforms ContextMenu
没有 isOpen
属性。您可以做的是订阅它的 Popup
和 Collapse
事件并使用私有变量来保存 ContextMenu 状态。像这样:
首先我们声明一个布尔变量:
private bool isContextMenuOpen;
然后,在表单的构造函数中(或者在我们将 ContextMenu
添加到 RichTextBox
之后)我们订阅事件:
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;
}
}