Как получить доступ к общедоступной функции формы WPF из другой формы

#c# #wpf

#c# #wpf

Вопрос:

Я нашел решение своего вопроса, но оно у меня не работает.

у меня есть две формы WPF, отличные от формы MinWindow. я хочу получить доступ к общедоступной функции Data() form1 в form2. я пытался (Application.Current.MainWindow as MainWindow).Data(); в form2 получить доступ к Data() функции form1, но ничего не произошло. Пожалуйста, предложите решение

Комментарии:

1. Это mainwindow или form1? Потому что, если вы выполняете как mainwindow и это не тот тип, тогда вы получаете null. На самом деле, я ожидал бы ошибки. Итак, он вызывает метод, но этот метод не выполняет то, что вы ожидаете?

2. Метод существует в form1, а не в mainwindow. И функция вообще не выполняется

3. Открыта ли form1 вообще в первом окне?

Ответ №1:

Это то, что я использую, когда мне нужно вызвать общедоступное свойство, функцию или метод. Если вы используете C #, переключиться с моего примера на VB не составит труда.

     Dim winOriginalWin As MainWindow
    winOriginalWin = Application.Current.Windows(0)
    winOriginalWin.PublicFunction()
  

Все окна, открытые в приложении WPF, будут иметь связанную с ним позицию индекса, которую вы можете использовать для установки ссылки на этот экземпляр окна. Дайте мне знать, работает ли это для вас или нет.

Если Form1 открыта как второе окно в приложении, я бы предложил:

     Dim winForm1 As Form1
    winForm1 = Application.Current.Windows(1)
    winFrom1.Data()