如何在Windows窗体应用程序中选择其他控件覆盖

时间:2013-06-21 19:17:04

标签: c# overlay

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

我的代码类似于:

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

问题是线条之间的按钮和其他控件覆盖了线条,所以只有当中间没有任何其他控件时它才会显示。

如何将该行放在其他控件的顶部?

2 个答案:

答案 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处理程序。我仍然建议寻找其他方法。这似乎太草率了。