1

当用户单击基本上链接它们的 2 个按钮时,我在运行时画了一条线。

我的代码是这样的:

Line l = new Line();
l.Size = new Size(#distance from button1 to button2 as width#)
l.Location = button1.Location

问题是线条之间的按钮和其他控件覆盖了线条,因此只有在中间没有任何其他控件时才可见。

如何在其他控件的顶部制作线条?

4

2 回答 2

1

您可以使用BringToFront()以z 顺序将Line(或任何)向前移动。Control

l.BringToFront();
于 2013-06-21T19:23:00.470 回答
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 添加到绘制处理程序。不过,我仍然建议寻找其他方法。这似乎太草率了。

于 2013-06-21T19:50:05.490 回答