当程序 运行 时,我如何让我的鼠标悬停在(悬停)和单击事件上
How do i make my Mouse over(hover)and on click events while the program is running
我制作了一个程序,您可以在其中询问省略号的数量,它使它们在 c# 中处于不同的 window,但我想要鼠标悬停效果 - 我理解为:MouseEnter 和一个 onclick 事件,据我所知称为 MouseDown,但我制作了一个椭圆数组并尝试了以下操作:
namespace WpfApp1
{
/// <summary>
/// Interaction logic for Window2.xaml
/// </summary>
public partial class Window2 : Window
{
int numOfElipses;
public Window2()
{
InitializeComponent();
numOfElipses= MainWindow.numOfElipse;
Ellipse[] ellipsePoints = new Ellipse[numOfElipses];
Random rnd = new Random();
for (int i=0;i<numOfElipses; i++)
{
SolidColorBrush brush =
new SolidColorBrush(
Color.FromRgb(
(byte)rnd.Next(255),
(byte)rnd.Next(255),
(byte)rnd.Next(255)
));
var top = rnd.Next(0, 280);
var left = rnd.Next(0, 450);
ellipsePoints[i] = new Ellipse();
ellipsePoints[i].Width = 40;
ellipsePoints[i].Height = 40;
Canvas.SetTop(ellipsePoints[i], i);
Canvas.SetLeft(ellipsePoints[i], i*45);
ellipsePoints[i].Fill = brush;
c1.Children.Add(ellipsePoints[i]);
}
}
private void E1_MouseEnter(object sender, MouseEventArgs e)
{
Random r = new Random();
Ellipse ellipsePoints = (Ellipse)sender;
ellipsePoints.Fill = new
SolidColorBrush(Color.FromRgb((byte)r.Next(255), (byte)r.Next(255),
(byte)r.Next(255)));
}
private void E1_MouseDown(object sender, MouseButtonEventArgs e)
{
c1.Children.Remove((Ellipse)sender);
}
}
}
但是 work.Can 没有人解释为什么以及如何让它在鼠标悬停时随机改变颜色,并且 disappear/be 在鼠标点击时移除?
如果有任何帮助,我将不胜感激!
如评论中所述,您需要实际将事件连接到您正在创建的省略号:
...
ellipsePoints[i].MouseEnter += E1_MouseEnter; // "hook up" the Mouse Enter event
ellipsePoints[i].MouseDown += E1_MouseDown; // "hook up" the Mouse Down event
c1.Children.Add(ellipsePoints[i]);
...
简单地创建 E1_MouseEnter
和 E1_MouseDown
方法并不会自动将它们连接起来,当我们考虑它时,这是有道理的。 Window 上可能有任意数量的对象具有这些事件 - 代码应该如何知道应该听谁的?
我制作了一个程序,您可以在其中询问省略号的数量,它使它们在 c# 中处于不同的 window,但我想要鼠标悬停效果 - 我理解为:MouseEnter 和一个 onclick 事件,据我所知称为 MouseDown,但我制作了一个椭圆数组并尝试了以下操作:
namespace WpfApp1
{
/// <summary>
/// Interaction logic for Window2.xaml
/// </summary>
public partial class Window2 : Window
{
int numOfElipses;
public Window2()
{
InitializeComponent();
numOfElipses= MainWindow.numOfElipse;
Ellipse[] ellipsePoints = new Ellipse[numOfElipses];
Random rnd = new Random();
for (int i=0;i<numOfElipses; i++)
{
SolidColorBrush brush =
new SolidColorBrush(
Color.FromRgb(
(byte)rnd.Next(255),
(byte)rnd.Next(255),
(byte)rnd.Next(255)
));
var top = rnd.Next(0, 280);
var left = rnd.Next(0, 450);
ellipsePoints[i] = new Ellipse();
ellipsePoints[i].Width = 40;
ellipsePoints[i].Height = 40;
Canvas.SetTop(ellipsePoints[i], i);
Canvas.SetLeft(ellipsePoints[i], i*45);
ellipsePoints[i].Fill = brush;
c1.Children.Add(ellipsePoints[i]);
}
}
private void E1_MouseEnter(object sender, MouseEventArgs e)
{
Random r = new Random();
Ellipse ellipsePoints = (Ellipse)sender;
ellipsePoints.Fill = new
SolidColorBrush(Color.FromRgb((byte)r.Next(255), (byte)r.Next(255),
(byte)r.Next(255)));
}
private void E1_MouseDown(object sender, MouseButtonEventArgs e)
{
c1.Children.Remove((Ellipse)sender);
}
}
}
但是 work.Can 没有人解释为什么以及如何让它在鼠标悬停时随机改变颜色,并且 disappear/be 在鼠标点击时移除? 如果有任何帮助,我将不胜感激!
如评论中所述,您需要实际将事件连接到您正在创建的省略号:
...
ellipsePoints[i].MouseEnter += E1_MouseEnter; // "hook up" the Mouse Enter event
ellipsePoints[i].MouseDown += E1_MouseDown; // "hook up" the Mouse Down event
c1.Children.Add(ellipsePoints[i]);
...
简单地创建 E1_MouseEnter
和 E1_MouseDown
方法并不会自动将它们连接起来,当我们考虑它时,这是有道理的。 Window 上可能有任意数量的对象具有这些事件 - 代码应该如何知道应该听谁的?