当用户单击基本上链接它们的 2 个按钮时,我在运行时画了一条线。
我的代码是这样的:
Line l = new Line();
l.Size = new Size(#distance from button1 to button2 as width#)
l.Location = button1.Location
问题是线条之间的按钮和其他控件覆盖了线条,因此只有在中间没有任何其他控件时才可见。
如何在其他控件的顶部制作线条?
您可以使用BringToFront()以z 顺序将Line
(或任何)向前移动。Control
l.BringToFront();
利用
l.BringToFront();
为该行创建一个事件处理程序,如下所示:
public void Line_LostFocus(object sender, EventArgs e)
{
Line L = (Line) sender;
L.focus();
}
并使用以下方法附加它:
l.LostFocus += Line_LostFocus;
不过,我不得不说这似乎是一种奇怪的做事方式。重新考虑是否应该创建自定义控件而不是覆盖现有控件。这似乎有点傻。
编辑 由于 LineShape 控件不支持焦点,请改为:
public void Line_ToFront(object sender, EventArgs e)
{
Line L = (Line) sender;
L.BringToFront();
}
并像这样附加:
Form1.Paint += Line_ToFront;
如果这不起作用,则遍历窗体上的每个控件并将 Line_ToFront 添加到绘制处理程序。不过,我仍然建议寻找其他方法。这似乎太草率了。