我试图在Winforms应用程序中集成一个工具窗口,它将是一个微小的浮动窗口,用于在列表框中显示元素详细信息。我需要的是在触发动作的控件的相对位置弹出窗口,所以这是事物:Location属性给出了控件从其容器(在这种情况下的主窗体)的相对位置,所以这是使用的解决方法:
public void Show(kTextBox source)
{
Point absCoord = source.PointToScreen(source.Location);
this.Location = this.PointToClient(absCoord);
base.Show();
}
基本上是:获取绝对控制位置并将此位置(先前转换为所有者亲属)设置到工具窗口。我认为它应该工作得很好,但在某种程度上缺失,并且它根据我使用的控制而变化。它有点令人困惑。有人吗?提前致谢。
答案 0 :(得分:1)
如果您尝试以下操作会发生什么:
public void Show(kTextBox source)
{
Point control_origin = source.PointToScreen(new Point(0, 0));
this.Location = new Point(control_origin.X, control_origin.Y);
base.Show();
}
答案 1 :(得分:-1)
private void button1_Click(object sender, EventArgs e)
{
ToolStripDropDown popup = new ToolStripDropDown();
popup.Margin = Padding.Empty;
popup.Padding = Padding.Empty;
ToolStripControlHost host = new ToolStripControlHost(frm);
host.Margin = Padding.Empty;
host.Padding = Padding.Empty;
popup.Items.Add(host);
popup.Show(button1, button1.Left - 10, button1.Top + (int)(button1.Height / 2));
}
Form2 frm = new Form2();
private void Form1_Load(object sender, EventArgs e)
{
frm.TopLevel = false;
}
}