BillWoodruff
Во-первых, поймите ответ OriginalGriff, опубликованный здесь, и убедитесь, что ваш код делает "правильную вещь" для отображения данных, которые вы хотите, чтобы пользователь видел.
Затем:
Я настоятельно рекомендую вам использовать отдельную форму для отображения ваших данных. Вы можете показать форму модально, используя 'ShowDialog, и передать обратно' DialogResult и / или другую информацию.
Посмотрите, как это просто: предположим, что у вас есть
a. создал форму с именем 'DataDisplayDialogForm,
б. у вас есть скрытые формы контроля заголовке при установке ControlBox = false в
c. вы поместили на него одну кнопку с именем " btnExit
d. вы поставили на нем один флажок под названием " cbxApproved
e. Вы установили свойство 'AcceptButton формы в' btnExit
f. вы поместили все элементы управления для отображения данных в форму и реализовали методы для отображения данных.
Пример формы для использования в качестве диалогового окна:
using System;
using System.Windows.Forms;
namespace YourNameSpace
{
public partial class DataDisplayDialogForm : Form
{
public DataDisplayDialogForm()
{
InitializeComponent();
}
private void DataDisplayDialogForm_Load(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
}
private void btnExit_Click(object sender, EventArgs e)
{
this.DialogResult = (cbxApproved.Checked)
? DialogResult.Yes
: DialogResult.No;
this.Close();
}
}
}
Затем вы можете отобразить
пример этой формы в виде диалогового окна из вашей основной формы и показывать этот экземпляр в виде диалогового окна при нажатии кнопки:
private DataDisplayDialogForm dataForm;
private void MainForm_Load(object sender, EventArgs e)
{
dataForm = new DataDisplayDialogForm();
}
private void ShowDataButton_Click(object sender, EventArgs e)
{
DialogResult viewResult = dataForm.ShowDialog();
if (viewResult == DialogResult.Yes)
{
// data approved
}
else
{
// data not approved
}
}
Как вы можете видеть, DialogResult, возвращаемый в основную форму при закрытии экземпляра пользовательской диалоговой формы, будет зависеть от того, установлен ли флажок в пользовательском диалоге или нет.
Когда вам нужно передать обратно пользовательские данные, а не только значение перечисления DialogResult, это можно сделать несколькими способами: путем создания пользовательского класса для "отправки обратно"; с помощью вызова событий, возможно, с помощью пользовательского класса EventArgs и т. д. Или вы можете предоставить доступ к элементам управления, используемым для отображения данных, установив общедоступные свойства, содержащие ссылки на них. И есть другие методы.