我有一个方法,我在A类中调用一个新的Windows窗体。在新窗体中,我使用一个下拉菜单,将选定的项目从下拉列表存储在一个名为selectedItem
的变量中。我必须在A类中访问此selectedItem
。我使用以下代码。
public class A
{
public method callingmethod()
{
ExceptionForm expform = new ExceptionForm();
expform.Show();
string newexp = expobj.selectedexception;
}
}
我的代码采用新形式,
public partial class ExceptionForm : Form
{
public string selectedexception = string.Empty;
private void btnExpSubmit_Click(object sender, EventArgs e)
{
selectedexception = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);
this.Close();
return;
}
}
现在点击“提交”按钮后,我在selectedItem
中得到了正确的值,但是我无法将其传递给A类。如何重新回到A类?
答案 0 :(得分:1)
使用ShowDialog()
方法。
expform.ShowDialog();
string newexp = expobj.selectedexception;
答案 1 :(得分:1)
如果您可以通过禁用父级表单发布ExceptionForm
,请转到ShowDialog
。但是,如果您不希望禁用父级并继续弹出ExceptionForm
作为新的独立窗口,请尝试将事件返回到父窗体。在这里,我展示了如何执行此操作的示例:
public partial class ExceptionForm : Form
{
public delegate void SelectValueDelegate(string option);
public event SelectValueDelegate ValueSelected;
private void btnExpSubmit_Click(object sender, EventArgs e)
{
this.Close();
if (this.ValueSelected!= null)
{
this.ValueSelected(this.comboBox1.GetItemText(this.comboBox1.SelectedItem));
}
return;
}
}
在致电课堂上:
public class A
{
public method callingmethod()
{
ExceptionForm expform = new ExceptionForm();
expform.ValueSelected += ExceptionForm_ValueSelected;
expform.Show();
}
private void ExceptionForm_ValueSelected(string option)
{
string newexp = option;
// Do whatever you wanted to do next!
}
}