如何在标签后面创建一个不可见(且可点击)的按钮?
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();
}
}
我正在尝试在标签后面制作一个不可见的按钮。
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();
}
}