Статически расположенные winforms в C # - PullRequest
0 голосов
/ 11 марта 2012

У меня есть три формы в C #, теперь, когда я хочу показать form2, я скрываю основную форму и показываю форму, а затем, когда закончу работать, скрываю вторую форму и снова показываю основную форму - я делаю это с помощью простойскрыть и показать функции в winforms.Теперь проблема в том, что каждая вызываемая форма размещается в другом месте на экране, а я хочу, чтобы все они оставались на одном месте.Как это сделать?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Попробуйте установить владельца формы при вызове .Show ()

Вы также можете установить начальную позицию перед вызовом show с помощью .StartPosition = FormStartPosition.CenterParent

Или установитьсвойство form.Location после вызова show

См. здесь и здесь для получения более подробной информации

1 голос
/ 11 марта 2012

У вас, без сомнения, есть ошибка в вашем коде, вы создаете новый экземпляр формы вместо того, чтобы снова вызывать Show () для скрытого объекта формы. Это плохая ошибка, она заставит вашу программу потреблять много машинных ресурсов, в конечном итоге она вылетит, когда Windows не разрешит вашему процессу создавать больше окон.

Чтобы ваша схема работала, вы должны написать код, который различает закрытую форму и скрытую. Лучший способ сделать это - явно отслеживать его время жизни с помощью события FormClosed. Как это:

    private Form2 form2Instance;

    private void button1_Click(object sender, EventArgs e) {
        if (form2Instance == null) {
            // Doesn't exist yet, so create and show it
            form2Instance = new Form2();
            form2Instance.FormClosed += delegate { form2Instance = null; };
            form2Instance.Show();
        }
        else {
            // Already exists, unhide, restore and activate it
            form2Instance.WindowState = FormWindowState.Normal;
            form2Instance.Visible = true;
            form2Instance.BringToFront();
        }

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