У меня есть две формы по имени mainForm и helperForm. На mainForm у меня есть кнопка, а на helperForm у меня есть richTextBox. Я хочу сделать это; после нажатия кнопки на mainForm я хотел бы отобразить helperForm, а также некоторый текст в richtextbox. С ниже кодом я могу видеть помощник формы, но текст идет после кнопки закончить весь процесс, который идет внутри ButtonClick события ...Открыть форму внутри другой формы?
MainForm
public partial class Form : Form
{
public HelperForm helperForm;
public MainForm()
{
InitializeComponent();
}
public void button_Click(object sender, EventArgs e)
{
helperForm= new HelperForm();
helperForm.Show();
helperForm.richTextBox1.AppendText("Program started");
//doing process1
helperForm.richTextBox1.AppendText("Program start to check process1");
//doing process2
helperForm.richTextBox1.AppendText("Program start to check process2");
//doing process3
helperForm.richTextBox1.AppendText("Program start to check process3");
//doing process2
helperForm.richTextBox1.AppendText("All the process are done!");
helperForm.Close();
}
Если вы хотите выполнить много кода из обработчика события Click, вам понадобятся потоки, чтобы избежать этого, чтобы пользовательский интерфейс не реагировал. Вставка вызовов helperForm.Update() - очень несовершенное, но простое обходное решение. –
@HansPassant Я удалил helperForm.Close(), но все же текст появился после завершения всех процессов. – user2611251
Ваш фрагмент кода очень неясен, он скрывает реальную проблему. Этот код мы не видим, что мешает элементам управления рисовать себя. Как отмечено, вызов helperForm.Update() после каждого вызова AppendText() заставляет элементы управления рисовать, чтобы вы могли его видеть. Я настоятельно рекомендую книгу о программировании Winforms, понимая, что это не тривиально и очень важно, чтобы писать правильный код GUI. –