如何在 C# 中使用 "drawing gesture" 更改多个标签的背景颜色?
How to change the background color on multiple labels using a "drawing gesture" in C#?
我的问题是如何 "draw" 在多个标签上。我有一个包含标签矩阵的表格。现在我想单击一个标签,将其拖到其他标签上,所有这些标签都应更改背景颜色。我有一个通过点击事件改变颜色的方法,但我找不到这个问题的事件。我还尝试了 Mous_Enter 事件并检查左按钮是否按下,但看起来事件触发器卡在第一个标签中。
所以起初我有这个,其中每个数字都在不同的标签中:
然后我想 "draw" 在标签上,这样背景颜色就会改变,所以我有如下内容:
将所有标签的 MouseClick 和 MouseMove 事件连接到以下事件处理程序:
private void MouseClickedOrMoved(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
ChangeLabelBackColor(this.PointToClient(MousePosition));
}
}
并将此函数添加到您的代码中:
private void ChangeLabelBackColor(Point Location)
{
foreach (Label l in this.Controls.OfType<Label>()) {
if (l.Bounds.Contains(Location))
{
l.BackColor = Color.Black;
}
}
}
我的问题是如何 "draw" 在多个标签上。我有一个包含标签矩阵的表格。现在我想单击一个标签,将其拖到其他标签上,所有这些标签都应更改背景颜色。我有一个通过点击事件改变颜色的方法,但我找不到这个问题的事件。我还尝试了 Mous_Enter 事件并检查左按钮是否按下,但看起来事件触发器卡在第一个标签中。
所以起初我有这个,其中每个数字都在不同的标签中:
然后我想 "draw" 在标签上,这样背景颜色就会改变,所以我有如下内容:
将所有标签的 MouseClick 和 MouseMove 事件连接到以下事件处理程序:
private void MouseClickedOrMoved(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
ChangeLabelBackColor(this.PointToClient(MousePosition));
}
}
并将此函数添加到您的代码中:
private void ChangeLabelBackColor(Point Location)
{
foreach (Label l in this.Controls.OfType<Label>()) {
if (l.Bounds.Contains(Location))
{
l.BackColor = Color.Black;
}
}
}