1

我的表单中有 Gridview,如果我单击 Gridview 上的按钮,我会得到 Focused Row 的列值并尝试在下一个表单中使用该值。但是在这样的新形式错误中

 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;
    }  

我的代码有什么问题?

4

1 回答 1

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
}
于 2013-11-06T11:06:46.737 回答