在C#winform devexpress中,对象引用未设置为对象错误的实例?

时间:2013-11-06 11:01:01

标签: c# winforms

我的表单中有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;
    }  

我的代码出了什么问题?

1 个答案:

答案 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
}