如何在定义的位置弹出工具窗口

时间:2010-04-22 15:11:39

标签: c# .net winforms

我试图在Winforms应用程序中集成一个工具窗口,它将是一个微小的浮动窗口,用于在列表框中显示元素详细信息。我需要的是在触发动作的控件的相对位置弹出窗口,所以这是事物:Location属性给出了控件从其容器(在这种情况下的主窗体)的相对位置,所以这是使用的解决方法:

    public void Show(kTextBox source)
    {

        Point absCoord = source.PointToScreen(source.Location);
        this.Location = this.PointToClient(absCoord);
        base.Show();

    }

基本上是:获取绝对控制位置并将此位置(先前转换为所有者亲属)设置到工具窗口。我认为它应该工作得很好,但在某种程度上缺失,并且它根据我使用的控制而变化。它有点令人困惑。有人吗?提前致谢。

2 个答案:

答案 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;
    }
}