C# 不知道如何写出鼠标。将鼠标悬停在if语句中
我用C# 不知道如何写出鼠标。将鼠标悬停在if语句中,c#,webforms,C#,Webforms,我用iconName标记了一些标签,并使用foreach隐藏它们,效果很好。 现在我想运行一个if语句,这样当鼠标悬停在图标上时,iconName就会显示出来。但我不知道怎么写 private void MainForm_Load(object sender, EventArgs e) { foreach (Label iconName in this.Controls.OfType<Label>()
iconName
标记了一些标签,并使用foreach
隐藏它们,效果很好。
现在我想运行一个if语句,这样当鼠标悬停在图标上时,iconName
就会显示出来。但我不知道怎么写
private void MainForm_Load(object sender, EventArgs e)
{
foreach (Label iconName in this.Controls.OfType<Label>())
{
if (iconName.Visible)
{
iconName.Hide(); // this works fine
}
if (iconName.MouseHover += new EventHandler()) // This line I don't know how to make it work
{
iconName.Show();
}
}
}
private void MainForm\u加载(对象发送方,事件参数e)
{
foreach(this.Controls.OfType()中的标签iconName)
{
如果(iconName.Visible)
{
iconName.Hide();//这很好用
}
if(iconName.MouseHover+=neweventhandler())//这一行我不知道如何使它工作
{
iconName.Show();
}
}
}
另外,我不明白突出显示的语法上的
+=
或-=
?这是否意味着如果用户切换了鼠标右键,那么哪个鼠标按钮是正确的?您可以使用
iconName.MouseHover += new EventHandler((object iconName, EventArgs e) => {
((Label)iconName).Show();
});
但是,要将事件处理程序代码放入行中,这将不起作用,因为隐藏标签不会触发mouseover事件
如果你把标签放在面板(看不见的容器)里,那么你可以使用类似的东西
foreach (Panel p in this.Controls.OfType<Panel>())
{
foreach (Label iconName in p.Controls.OfType<Label>())
{
iconName.Hide();
}
p.MouseHover += new EventHandler((object p, EventArgs e) => {
foreach (Label iconName in ((Panel)p).Controls.OfType<Label>())
{
iconName.Show();
}
});
}
foreach(此.Controls.OfType()中的面板p)
{
foreach(p.Controls.OfType()中的标签iconName)
{
隐藏();
}
p、 MouseHover+=新的事件处理程序((对象p,事件参数e)=>{
foreach(在((Panel)p.Controls.OfType()中标记iconName)
{
iconName.Show();
}
});
}
我假设您希望标签在移出后消失,您需要向面板添加MouseLeave事件,以便在鼠标移出面板区域后再次隐藏标签您的C#书是否没有讨论和解释事件处理程序以及如何使用它们?“如果”不是“什么时候”。呃<代码>鼠标悬停是一个事件,如果,您认为您试图用它检查什么?在Winforms中,您可以通过回调处理所有此类交互,不必循环检查。我没有C#book,我看了教程视频,但没有了解如何使用。第二部分我不明白,为什么我不能用if检查这个?我明白你的意思,这是一个事件,似乎是语言的另一部分,但是为什么我不能使用if来检查某个条件在C#中是否为真?例如,如果mouse.hover为真/假,C#无法判断?我觉得这很奇怪。。。