我正在显示一个带有2个文本框的模态表单;通过将字符串传递给模态窗体的构造函数,从调用者传递第一个文本框。第二个文本框为空白,我在其中键入数据,然后单击“确定”。
我无法检索键入第二个文本框的值(事实上,我的btnOK_click代码中的断点不会停止执行)。
MetaDataForm getMetaData = new MetaDataForm(theRootFolder.FolderPath);
getMetaData.ShowDialog();
if (getMetaData.DialogResult == DialogResult.OK)
{
string d1 = getMetaData.Meta1;
string d2 = getMetaData.Meta2; // this is always null !
以模态形式:
public partial class MetaDataForm : Form
{
public string Meta1 { get; set; } // via auto-implemented properties
public string Meta2 { get; set; }
public MetaDataForm(string folder)
{
InitializeComponent();
this.label1.Text = folder;
this.Meta1 = ParseOutlookFolder(folder);
this.txtMeta1.Text = this.Meta1;
}
private string ParseOutlookFolder(string folder)
{
string[] a = folder.Split('\\');
return a[a.Length - 1];
}
private void btnOK_click(object sender, EventArgs e)
{
this.Meta2 = this.txtMeta2.Text; // copy from text box into public property (not working?)
this.Meta1 = this.txtMeta1.Text;
this.DialogResult = DialogResult.OK; // added per 1st reply below but no improvement
this.Close();
}
编辑:请注意:
在btnOK_click事件中的此行设置断点时:
this.Meta2 = this.txtMeta2.Text; // copy from text box into public property
..它永远不会“被击中”。这可能就是为什么当我在这一行停止执行时:
string d2 = getMetaData.Meta2; // this is always null !
..它总是空的?
简而言之,当您在显示模式表单后在主代码中恢复时,如何从表单中获取值?
答案 0 :(得分:3)
(事实上,我的btnOK_click代码中的断点不会停止执行
听起来在对表单进行更改时删除了事件处理程序,请检查设计器代码,例如:
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
或检查Click事件处理程序是否指向此表单的设计视图中的正确函数。