当我启动表单而不发送信息时,它会正确打开带有列标题的列表视图。
但是,当我尝试打开相同的表单来更新信息时,列表视图丢失了标题。不存在的 fcam 和列表视图顶部的所有其余编程
正常打开不发送数据
代码:
public FrmMicroConfig() { InitializeComponent(); }
打开并发送数据
`public FrmMicroConfig(字符串设备): this() {
Dispostivo dispositivo = Dispostivo.JsonDesserializar(device);
txtDevicename.Text = dispositivo.Nome;
txtDeviceIp.Text = dispositivo.IP;
txtDeviceLocal.Text = dispositivo.Local;
LstdeviceVariables.Columns.Add("Nome");
LstdeviceVariables.Columns.Add("Id");
LstdeviceVariables.Columns.Add("StartBit");
LstdeviceVariables.Columns.Add("Lenght");
LstdeviceVariables.Columns.Add("Factor");
LstdeviceVariables.Columns.Add("Offset");
foreach (var Variable in dispositivo.Variables)
{
ListViewItem lvi = new ListViewItem(Variable.Nome);
lvi.SubItems.Add(Variable.Id.ToString());
lvi.SubItems.Add(Variable.Startbit.ToString());
lvi.SubItems.Add(Variable.Lenght.ToString());
lvi.SubItems.Add(Variable.Factor.ToString());
lvi.SubItems.Add(Variable.Offset.ToString());
LstdeviceVariables.Items.Add(lvi);
}
InitializeComponent();
}`
结果就是这两个屏幕
常开:
打开错误:
我无法确定错误来自哪里 我已经尝试稍后添加标题但什么也没有 即使没有向列表视图添加项目,结果也是相同的 列表视图无法正常工作
知道这个错误是如何产生的吗?也许是一些错误的类配置或对象类型?
在表单构造函数中,InitializeComponent() 应该是第一个或第一个项目之一。 这将确保所有控件均按照您的设计师进行设置。
如果您稍后根据当前代码调用InitializeComponent(),那么它将覆盖您之前设置的任何内容。
public FrmMicroConfig(string device) : this() {
//Call InitializeComponent first.
InitializeComponent();
Dispostivo dispositivo = Dispostivo.JsonDesserializar(device);
//Now the rest of your code.
txtDevicename.Text = dispositivo.Nome;
txtDeviceIp.Text = dispositivo.IP;
txtDeviceLocal.Text = dispositivo.Local;
LstdeviceVariables.Columns.Add("Nome");
LstdeviceVariables.Columns.Add("Id");
LstdeviceVariables.Columns.Add("StartBit");
LstdeviceVariables.Columns.Add("Lenght");
LstdeviceVariables.Columns.Add("Factor");
LstdeviceVariables.Columns.Add("Offset");
foreach (var Variable in dispositivo.Variables)
{
ListViewItem lvi = new ListViewItem(Variable.Nome);
lvi.SubItems.Add(Variable.Id.ToString());
lvi.SubItems.Add(Variable.Startbit.ToString());
lvi.SubItems.Add(Variable.Lenght.ToString());
lvi.SubItems.Add(Variable.Factor.ToString());
lvi.SubItems.Add(Variable.Offset.ToString());
LstdeviceVariables.Items.Add(lvi);
}
}
InitializeComponent
方法是创建和配置所有控件的地方。如果在调用该方法之前将引用控件的代码放入构造函数中,则会抛出 NullReferenceException
并且构造函数的其余部分将不会执行。您需要在调用 InitializeComponent
之后添加任何附加代码。