C# 可见性更改后,单击另一个按钮上某个按钮的事件
我正在用C#开发一个windows窗体应用程序。我有一个大按钮“MainButton”,它有一个背景图像来反映它的主要功能。在这个主按钮中,我还包括了另外3个小按钮,我把它们命名为“CreatButton”、“UpdateButton”和“DisplayButton” 当用户在大按钮内移动鼠标时,我会显示所有小按钮,否则当鼠标离开大按钮时,我会隐藏小按钮。请参阅下面的代码 我的问题是,当用户在大按钮内移动鼠标时,小按钮的单击事件不起作用。 注意:我也尝试过用图片框替换大按钮,但不幸的是,效果不太好。 非常感谢您的帮助C# 可见性更改后,单击另一个按钮上某个按钮的事件,c#,C#,我正在用C#开发一个windows窗体应用程序。我有一个大按钮“MainButton”,它有一个背景图像来反映它的主要功能。在这个主按钮中,我还包括了另外3个小按钮,我把它们命名为“CreatButton”、“UpdateButton”和“DisplayButton” 当用户在大按钮内移动鼠标时,我会显示所有小按钮,否则当鼠标离开大按钮时,我会隐藏小按钮。请参阅下面的代码 我的问题是,当用户在大按钮内移动鼠标时,小按钮的单击事件不起作用。 注意:我也尝试过用图片框替换大按钮,但不幸的是,效果不太
private void MainButton_MouseEnter(object sender, EventArgs e)
{
CreateButton.Visible = true;
UpdateButton.Visible = true;
DisplayButton.Visible = true;
}
private void MainButton_MouseLeave(object sender, EventArgs e)
{
CreateButton.Visible = false;
UpdateButton.Visible = false;
DisplayButton.Visible = false;
}
private void CreateButton_Click(object sender, EventArgs e)
{
// do something ..
}
private void UpdateButton_Click(object sender, EventArgs e)
{
// do something ..
}
private void DisplayButton_Click(object sender, EventArgs e)
{
// do something ..
}
可以使用具有图像背景的面板控件。请记住,如果在面板控件上使用
鼠标离开
,则当您将鼠标悬停在按钮上方时,面板的鼠标离开
事件将被触发,按钮将闪烁,您将无法执行任何操作
你可以通过在鼠标指针下确定控件而不做任何事情来克服这个问题,如果它是你的一个按钮
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr WindowFromPoint(Point pnt);
private void panel1_MouseLeave(object sender, EventArgs e)
{
IntPtr hWnd = WindowFromPoint(Control.MousePosition);
if(hWnd !=IntPtr.Zero)
{
Control control = Control.FromChildHandle(hWnd);
if (control != null)
{
if(control==buttonOne || control==buttonTwo || control==buttonThree )
return;
}
}
this.buttonOne.Visible = false;
this.buttonTwo.Visible = false;
this.buttonThree.Visible = false;
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
this.buttonOne.Visible = true;
this.buttonTwo.Visible = true;
this.buttonThree.Visible = true;
}
private void button_Click(object sender, EventArgs e)
{
Control control=(Control)sender;
MessageBox.Show(control.Text);
}
谢谢Charlie,这真的解决了问题,但面板上还有一件事,三个按钮一个接一个慢慢消失了。我想知道是否有办法让它们一起更快地消失。再次感谢。我没有在我所做的代码中看到这一点。在休假期间,您还做了其他事情吗?你能把你的密码贴出来,我来看看吗