如何使用“更改多个标签上的背景色”;“绘画手势”;在C#中?

如何使用“更改多个标签上的背景色”;“绘画手势”;在C#中?,c#,winforms,label,C#,Winforms,Label,我的问题是如何在多个标签上“绘制”。我有一个包含标签矩阵的表单。现在我想点击一个标签,拖动到其他标签上,所有这些标签都应该改变背景颜色。我有一个方法可以通过单击事件更改颜色,但我找不到解决此问题的事件。我还尝试了Mous_Enter事件,并检查了左按钮是否按下,但看起来事件触发器卡在了第一个标签中 所以首先我有一个,每个数字都在不同的标签上: 然后我想在标签上“画”,这样背景颜色就会改变,所以我有如下的东西: 将所有标签的MouseClick和MouseMove事件连接到以下事件处理程序:

我的问题是如何在多个标签上“绘制”。我有一个包含标签矩阵的表单。现在我想点击一个标签,拖动到其他标签上,所有这些标签都应该改变背景颜色。我有一个方法可以通过单击事件更改颜色,但我找不到解决此问题的事件。我还尝试了Mous_Enter事件,并检查了左按钮是否按下,但看起来事件触发器卡在了第一个标签中

所以首先我有一个,每个数字都在不同的标签上:

然后我想在标签上“画”,这样背景颜色就会改变,所以我有如下的东西:

将所有标签的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;
            }
        }
    }
private void changelbackcolor(点位置)
{
foreach(this.Controls.OfType()中的标签l){
if(l.Bounds.Contains(位置))
{
l、 背景色=颜色。黑色;
}
}
}

当鼠标按钮按下时,鼠标被绑定到控件上,鼠标向下移动发生在该控件上。然后,您可以使用它的mousemove并检查它移动的坐标。这些将超出该控制范围(小于零和/或大于其大小)。所以你必须计算出它在哪里你是否考虑过使用DigaGrdVIEW?或者你打了我30秒。该死,非常感谢。它工作得近乎完美。我在FlowLayoutPanel中有我的标签,您的代码在选定的下绘制一个或两个标签,您有什么想法吗?(我使用flowLayoutPanel.Controls而不是Controls,因为没有它就无法工作)是的。在此行中:
changelabackcolor(this.PointToClient(MousePosition))将单词
this
更改为面板名称