【发布时间】:2017-08-30 04:22:28
【问题描述】:
我正在尝试将一个公共函数传递给一个新表单以处理一些细节并更新主表单,但我在这一行得到了 NullReferenceException eh.TextBox1.Text = dt.Columns[e.ColumnIndex].ToString();
有趣的是,如果我取出委托(左侧)代码不会崩溃(但显然不起作用),直到我包含委托后才会发生这种情况
EditHeader eh = new EditHeader(); -> EditHeader eh = new EditHeader(this.UpdateHeader);
这里是form1的相关代码
private void OnColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
EditHeader eh = new EditHeader(this.UpdateHeader);
eh.TextBox1.Text = dt.Columns[e.ColumnIndex].ToString();
eh.TextBox2.Text = e.ColumnIndex.ToString();
eh.Show();
}
private void UpdateHeader(string indexVal) {
string[] array = indexVal.Split(',');
int index = int.Parse(array[0]);
dt.Columns[index].ColumnName = array[1];
}
这里是 EditHeader(或 form2)
private readonly Action<string> _UpdateHeader;
public EditHeader() {
InitializeComponent();
}
private void EditHeader_Load(object sender, EventArgs e) {
}
public EditHeader(Action<string> updateHeader) {
_UpdateHeader = updateHeader;
}
public TextBox TextBox1 {
get {
return textBox1;
}
set {
}
}
public TextBox TextBox2 {
get {
return textBox2;
}
set {
}
}
private void button1_Click(object sender, EventArgs e) {
int index = int.Parse(textBox2.Text);
string indexVal = index.ToString() + "," + textBox1.Text;
_UpdateHeader(indexVal);
this.Close();
}
【问题讨论】:
标签: c# visual-studio