我的表单中有Gridview,如果我单击Gridview上的按钮,我会获得Focused Row的Column值,并尝试在下一个表单中使用该值。但是在这个新的表单错误显示如下
public partial class New_Invoice : DevExpress.XtraEditors.XtraForm
{
string getOper = "A";
public New_Invoice()
{
InitializeComponent();
}
public New_Invoice(string oper, int invoiceno)
{
// TODO: Complete member initialization
textEdit5.Text = invoiceno.ToString(); // error shown in this line
textEdit5.Visible = false;
getOper = oper;
}
我的代码出了什么问题?
答案 0 :(得分:5)
在自定义构造函数中,未调用InitializeComponent()
。这很关键:这就是创建控件的原因。一个简单的修复可能是链接构造函数(参见: this()
):
public New_Invoice(string oper, int invoiceno) : this()
{
textEdit5.Text = invoiceno.ToString(); // error shown in this line
textEdit5.Visible = false;
getOper = oper;
}
但是,我个人建议反对向表单/控件添加自定义构造函数,而是在新创建的实例上使用属性/方法,因此调用者执行以下操作:
using(var form = new NewInvoice())
{
form.Operation = ...; // (or maybe form.SetInvoiceNumber(...) if the
form.InvoiceNumber = ...; // logic is non-trivial)
// show the form, etc
}