Возможно, я не буду проясняться в названии, при необходимости измените его. Теперь я подхожу к объяснению:WPF + Windows Forms, откройте вторую форму как дочерний элемент MainWindow из первой формы
У меня есть программа, выполненная в WPF (вызывают графику). MainWindow открывает первую форму с помощью кнопки, Form1 делает некоторые вещи, меняя пользовательский интерфейс MainWindow, и когда это будет сделано, следует открыть Form2, чтобы он также делал некоторые изменения пользовательского интерфейса MainWindow, но я не могу откройте форму Form2 через Form1.
Вот код:
MainWindow.xaml.cs
internal static MainWindow main; //It allows me to put the Form1 in the same context in order to change the UI
private void start_button_Click(object sender, RoutedEventArgs e)
{
Form1 frm = new Form1(this);
frm.Show();
}
Form1.cs
//function that allow me to communicate with the MainWindow
private MainWindow main1 = null;
public Form1(MainWindow callingForm)
{
main1 = callingForm as MainWindow;
InitializeComponent();
}
//Load function
private void Form1_Load(object sender, EventArgs e)
{
//do some stuff changing MainWindow UI
Form2 frm = new Form2(main1); //no compilation error
frm.Show();
}
Теперь Form2 не открывается. Я также попытался сделать это, назвав пустоту, которая находится в MainWindow с Form1, но ничего. Что мне нужно сделать? ПРИМЕЧАНИЕ ХОРОШО: необходимо изменить пользовательский интерфейс главного окна также с помощью Form2, и мне нужно, чтобы Form2 был открыт только в конце вычислений Form1.
Какое пространство имен является 'Form'? Похоже, это для Winforms? –
Пространство имен "Application__WPF" @lll – Northumber
Можете ли вы попробовать обернуть вызов функции для 'Form2' в' Dispatcher'? Такие, как 'Dispatcher.BeginInvoke' –