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

时间:2013-03-29 17:21:45

标签: c#

我有一组以编程方式生成的标签。我希望在以下情况下更改标签的背景和文字:

1-mouse_click事件
2 - 鼠标单击并移动到其他标签(我希望用户只需单击一次即可更改某些标签(按住它)并移动到邻居标签。  我应该将哪个事件用于第二目的? 我将以下代码用于mouse_click事件:

    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();
    }

enter image description here

1 个答案:

答案 0 :(得分:3)

您应该使用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();
}