如何在标签后面创建一个不可见(且可点击)的按钮?

How can I create an Invisible (and clickable) button behind a label?

我正在尝试在标签后面制作一个不可见的按钮。

This is what I achieved so far.

这背后的想法是,如果我点击一个数字的下半部分,它应该减少,如果我点击它的上半部分,它应该增加,这就是我想要实现的。

这就是我让按钮不可见的方法:

button2.FlatStyle = FlatStyle.Flat; 
button2.FlatAppearance.BorderSize = 0; 
button2.FlatAppearance.MouseDownBackColor = Color.Transparent; 
button2.FlatAppearance.MouseOverBackColor = Color.Transparent; 
button2.BackColor = Color.Transparent; 

唯一的问题是,如果我将按钮移到标签上,它会隐藏标签。 (我尝试 'Send to back' 按钮,但当我这样做时,它不再可点击。)

如果您有解决方案,请与我分享:)

Bubbling up events 在 winforms 中不受标准支持,它在 WPF 中默认可用,解决您的问题的更简单的解决方案是处理标签的 MouseClick 事件

    private void numLabel_MouseClick(object sender, MouseEventArgs e)
        {
            int num = 0;
            int.TryParse(numLabel.Text, num);
            if (e.Y > numLabel.Size.Height / 2) num--; else num++;
            numLabel.Text = num+"";
        }

你 运行 遇到了空气 space 问题,如果你能看到标签,你将无法点击按钮。为什么不尝试使用标签的 MouseUp 事件来获取鼠标坐标,然后比较它在标签中的位置以确定是增加还是减少标签。

像这样:

private void label1_MouseUp(object sender, MouseEventArgs e)
    {
        int temp;

        if (e.Y < label1.Height / 2)
            { if (int.TryParse(label1.Text, out temp))
                label1.Text = (temp += 1).ToString();}
        else
        {
            if (int.TryParse(label1.Text, out temp))
                label1.Text = (temp -= 1).ToString();
        }
    }