Возвращение к основной форме - PullRequest
3 голосов
/ 26 августа 2011

У меня есть приложение на C # с двумя формами.

Первая - это основная форма, которая всегда должна быть открытой.

Вторая - это панель предварительного просмотра, которую пользователь может включить.

Когда пользователь выбирает отображение панели предварительного просмотра (опция меню), панель предварительного просмотра открывается.

Что я и хочу.

Однако я хочу, чтобы панель предварительного просмотра не фокусировалась. В противном случае, если пользователи хотят получить доступ к меню (которое находится в главной форме), они сначала щелкают, и похоже, что ничего не происходит (но на самом деле фокус переключается с предварительного просмотра -> основного). Только после второго щелчка они могут получить доступ к меню.

Так что я подумал, что у меня есть довольно простое решение:

Если предварительный просмотр получит фокус, просто установите фокус на основную форму.

Однако похоже, что я не могу получить доступ к главной форме из панели предварительного просмотра.

Чтобы показать панель предварительного просмотра, я просто делаю (в основной форме):

QRcodeGenerator.QrCodePreview preview = new QRcodeGenerator.QrCodePreview();
preview.show();

Я попытался вернуть фокус главной форме, выполнив (в окне предварительного просмотра):

private void QrCodePreview_GotFocus(object sender, EventArgs e)
{
    QrCodeGenerator.QrCodeSampleApp.focus();
}

Но, как уже говорилось, похоже, я не могу получить к нему доступ.

форма исчезла http://s2.postimage.org/6ncwyxmnm/looking_for_my_main_form.png

Ответы [ 4 ]

2 голосов
/ 26 августа 2011

Если вы вызываете

preview.show();

как

preview.show(this);

, вы можете получить доступ к главной форме внутри объекта предварительного просмотра с помощью preview.Parent.

2 голосов
/ 26 августа 2011

вам нужно передать экземпляр mainform дочерней форме.Поэтому создайте свойство в форме предварительного просмотра, которое вы установили перед вызовом show.Затем получите доступ к этому экземпляру главной формы из экземпляра формы предварительного просмотра

0 голосов
/ 27 ноября 2017

используйте ShowDialog () для запуска предварительного просмотра, затем на следующей строке после вызова ShowDialog () вызовите this.Focus ()

0 голосов
/ 26 августа 2011

Вы можете попробовать,

Для Form1 do,

public static Form1 Current;

public Form1()
{
    InitializeComponent();
    Current = this;
}

Затем из формы предварительного просмотра,

Form1.Current.Focus();
...