как переместить две формы окна вместе? - PullRequest
0 голосов
/ 07 августа 2010

У меня есть основная форма, когда я нажимаю btn. Я открываю новую форму с помощью функции showDialog (), мне нужно переместить две формы вместе, когда я нажимаю на главную форму, потому что они имеют общий дизайн.как я могу переместить их вместе, либо я нажимаю на основную форму и перемещаю ее, либо я нажимаю на форму 2 и перемещаю ее?Спасибо за любое предложение.

Ответы [ 2 ]

5 голосов
/ 07 августа 2010

Вы можете создать отдельный класс для управления соединениями форм и обработкой событий.

class FormConnector
{
    private Form mMainForm;

    private List<Form> mConnectedForms = new List<Form>();

    private Point mMainLocation;

    public FormConnector(Form mainForm)
    {
        this.mMainForm = mainForm;
        this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
        this.mMainForm.LocationChanged += new EventHandler(MainForm_LocationChanged);
    }

    public void ConnectForm(Form form)
    {
        if (!this.mConnectedForms.Contains(form))
        {
            this.mConnectedForms.Add(form);
        }
    }

    void MainForm_LocationChanged(object sender, EventArgs e)
    {
        Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y);
        foreach (Form form in this.mConnectedForms)
        {
            form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
        }

        this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    }
}

Теперь все, что вам нужно сделать, - это создать экземпляр FormConnector и вызвать метод ConnectForm с формой, к которой вы хотите подключиться..

0 голосов
/ 07 августа 2010

Основными ингредиентами являются свойства Top, Left, Location и Width. Скажем, у вас есть ссылка на обе формы, называемые form1 и form2. Вы можете изменить положение окна следующим образом:

form2.Location = new Point(form1.Left + form1.Width, form1.Top);

Результат - обе формы, выровненные по верху, с form2 справа.

Справка:

http://msdn.microsoft.com/en-us/library/aa984420.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...