C# 如何在mousedown和mousemove事件期间更改控件属性?

C# 如何在mousedown和mousemove事件期间更改控件属性?,c#,C#,我有一组以编程方式生成的标签。我想更改标签的背景和文本,同时: 1-鼠标点击事件 2-鼠标单击并移动到其他标签(我希望用户可以通过单击(按住它)更改一些标签,然后移动到相邻标签。 我应该将哪个事件用于第二个目的? 我对鼠标点击事件使用以下代码: private void labels_Click(object sender, EventArgs e) { Label lbl = (Label)sender; if (lbl.Text == "1")

我有一组以编程方式生成的标签。我想更改标签的背景和文本,同时:

1-鼠标点击事件
2-鼠标单击并移动到其他标签(我希望用户可以通过单击(按住它)更改一些标签,然后移动到相邻标签。 我应该将哪个事件用于第二个目的? 我对鼠标点击事件使用以下代码:

    private void labels_Click(object sender, EventArgs e)
    {
        Label lbl = (Label)sender;
        if (lbl.Text == "1")
        {
            lbl.Text = "0";
            lbl.BackColor = Color.FromArgb(225, 0, 0);
        }
        else
        {
            lbl.Text = "1";
            lbl.BackColor = Color.FromArgb(224, 224, 226);
        }
        SetHexNumbers();
    }

您应该使用
MouseEnter
,但不要忘记将发送方的
Capture
属性设置为
false

试试这个:

bool isMouseDown;

private void labels_Click(object sender, EventArgs e)
{
    DoAction(sender);
}

private void labels_MouseDown(object sender, MouseEventArgs e)
{
    isMouseDown = true;
    DoAction(sender);
}

private void labels_MouseUp(object sender, MouseEventArgs e)
{
    isMouseDown = false;
}


private void label_MouseEnter(object sender, EventArgs e)
{
    if (isMouseDown)
    {
        DoAction(sender);
    }
}

private void DoAction(object sender)
{
    Label lbl = (Label)sender;
    lbl.Capture = false;           //DO NOT FORGET THIS LINE

    if (lbl.Text == "1")
    {
        lbl.Text = "0";
        lbl.BackColor = Color.FromArgb(225, 0, 0);
    }
    else
    {
        lbl.Text = "1";
        lbl.BackColor = Color.FromArgb(224, 224, 226);
    }
    SetHexNumbers();
}

您应该使用
MouseEnter
,但不要忘记将发送方的
Capture
属性设置为
false

试试这个:

bool isMouseDown;

private void labels_Click(object sender, EventArgs e)
{
    DoAction(sender);
}

private void labels_MouseDown(object sender, MouseEventArgs e)
{
    isMouseDown = true;
    DoAction(sender);
}

private void labels_MouseUp(object sender, MouseEventArgs e)
{
    isMouseDown = false;
}


private void label_MouseEnter(object sender, EventArgs e)
{
    if (isMouseDown)
    {
        DoAction(sender);
    }
}

private void DoAction(object sender)
{
    Label lbl = (Label)sender;
    lbl.Capture = false;           //DO NOT FORGET THIS LINE

    if (lbl.Text == "1")
    {
        lbl.Text = "0";
        lbl.BackColor = Color.FromArgb(225, 0, 0);
    }
    else
    {
        lbl.Text = "1";
        lbl.BackColor = Color.FromArgb(224, 224, 226);
    }
    SetHexNumbers();
}