如何在 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;
            }
        }
    }