我在运行时绘制一条线,当用户点击基本上链接它们的2个按钮时。
我的代码类似于:
Line l = new Line();
l.Size = new Size(#distance from button1 to button2 as width#)
l.Location = button1.Location
问题是线条之间的按钮和其他控件覆盖了线条,所以只有当中间没有任何其他控件时它才会显示。
如何将该行放在其他控件的顶部?
答案 0 :(得分:1)
您可以使用BringToFront()将Line
(或任何Control
)按z顺序前进。
l.BringToFront();
答案 1 :(得分:0)
使用
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添加到paint处理程序。我仍然建议寻找其他方法。这似乎太草率了。