C# 文本框值在form.Show上被清除

C# 文本框值在form.Show上被清除,c#,winforms,textbox,C#,Winforms,Textbox,我有一个form类,它的构造函数接受一组参数,这些参数用于填充表单上的控件。它们由一个复选框、一对组合框、一个日期时间选择器和一对文本框组成。呈现表单时,文本框显示为空。如果我单步执行代码,我会看到textbox.Text字段设置正确,但是当调用form.Show时,这些值会被清除。所有其他控件都保留传递给构造函数的值 这些表单都是动态构建的。我不明白为什么会发生这种情况,构造函数和呈现之间没有运行其他代码 public partial class Disposition : Form {

我有一个form类,它的构造函数接受一组参数,这些参数用于填充表单上的控件。它们由一个复选框、一对组合框、一个日期时间选择器和一对文本框组成。呈现表单时,文本框显示为空。如果我单步执行代码,我会看到textbox.Text字段设置正确,但是当调用form.Show时,这些值会被清除。所有其他控件都保留传递给构造函数的值

这些表单都是动态构建的。我不明白为什么会发生这种情况,构造函数和呈现之间没有运行其他代码

public partial class Disposition : Form
{
    string _ncmID;
    int _baseNumber;
    string _type;
    string _by;
    string _partNo;
    DateTime _date;
    int _qty;
    bool _supplierCaused;
    string _notes;
    DateTime _dateReturned;
    frmMain _parentForm;
    GroupBox gbDisposition;
    CheckBox cbSupplierCaused;
    TextBox txtDispQuantity;        
    Label lblQuantity;
    DateTimePicker dtDate;
    Label lblDate;
    ComboBox cboBy;
    Label lblBy;
    TextBox txtNotes;
    Label lblNotes;
    DateTimePicker dtDateReturned;
    ComboBox cboPart; 

public Disposition(frmMain parent, string type, string by, DateTime date, int qty, bool supplierCaused, 
        string partNo, string notes, string ncmID, int baseNumber, DateTime dateReturned)
    {
        InitializeComponent();

        _parentForm = parent;            
        _type = type;
        _by = by;
        _qty = qty;
        _date = date;
        _supplierCaused = supplierCaused;
        _partNo = partNo;
        _notes = notes;
        _ncmID = ncmID;
        _baseNumber = baseNumber;
        _dateReturned = dateReturned;

        switch (_type)
        {
            case "Scrap":                    
                DrawScrap(true);
                break;
            case "Rework":
                DrawRework(true);
                break;
            case "Return to Vendor":
                DrawReturn(true);
                break;
            case "Use as Is":
                DrawUse(true);
                break;
            case "Void":
                DrawVoid(true);
                break;
            default:
                break;
        }

    }
每个绘图方法都会向窗体添加控件,例如

 txtDispQuantity = new TextBox();
 txtDispQuantity.Location = new Point(248, 31);
 txtDispQuantity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
 txtDispQuantity.Size = new Size(55, 20);
 txtDispQuantity.Validating += new CancelEventHandler(txtDispQuantity_Validating);
 txtDispQuantity.Text = _qty.ToString();
 gbDisposition.Controls.Add(txtDispQuantity);
所以我只是设置Textbox的Text属性,然后将其添加到groupbox。如果我在调试器中检查该类,那么一切看起来都很好,但一旦调用Show 文本字段被清除,并在“监视”窗口中显示为红色。所有其他控件都保留在绘制方法中设置的值

表单加载中唯一发生的事情是组合框设置(将字符串添加到项目列表)


在代码中,我没有将这些控件的文本字段设置为除从数据库检索的值以外的任何值,这些值永远不会为空,因为验证不允许它…

结果表明,表单上的另一个控件(组合框)由于逻辑缺陷引发异常,但仍然显示正确的值。谢谢你的帮助。

你能分享代码吗?你是在使用
txtboxId.Text
设置文本框的文本吗?你确定文本框在表单加载时不清晰吗(称为wen you show the Form)!您确定在初始化表单后不清除它吗?为textbox添加TextChanged事件处理程序并在其上设置断点。您将在调用堆栈窗口中找到更改Text属性的代码。
private void txtDispQuantity_Validating(object sender, CancelEventArgs e)
{
    int q;

    if (!Int32.TryParse(txtDispQuantity.Text, out q))
    {
        MessageBox.Show("Please enter an integer value for the quantity", "NCM", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
}