Как открыть Toolwindow в определенной позиции - PullRequest
2 голосов
/ 22 апреля 2010

Я пытаюсь интегрировать окно инструментов в приложение Winforms, это будет крошечное плавающее окно для отображения деталей элемента в списке. Что мне нужно, это поместить окно в относительную позицию по отношению к элементу управления, который запускает действие, так что вот в чем дело: свойство Location дает мне относительную позицию элемента управления из его контейнера (основной формы в данном случае), так что это Обходной путь, который я использую:

    public void Show(kTextBox source)
    {

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

    }

По сути это: получить абсолютную контрольную позицию и установить эту позицию (ранее преобразованную в владельца относительно) в окно инструментов. Я думаю, что это должно работать просто отлично, но в определенной степени отсутствует, и это зависит от того, какой контроль я использую. Это немного сбивает с толку. Был ли кто-нибудь ?? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Что произойдет, если вы попробуете следующее:

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();
}
0 голосов
/ 24 июня 2014
   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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...