应该在哪里初始化新表格?

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
所以我想初始化第二个表单并准备使用显示"Form2 frmForm2 =新的Form2(); "。放置这条线的最佳位置在哪里?

谢谢
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
文档在哪里建议您放置这行?

一个更好的问题。那条线是做什么用的?

如果您有form1和form2。如果form1不允许您访问form2的对象,您认为您需要做什么?

当然,如果您知道如何实例化对象,就知道如何以及在何处使用它。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
一般来说,您将在显示表单之前立即创建一个表单。假设在这种情况下没有其他必要,您可以将该行代码直接放在显示该行的行之前,例如在里面 点击 一个的事件处理程序 按钮 如果您想在用户单击时显示表单 按钮 。如果您要在这种情况下进行其他操作,则表明您认为自己有理由这样做。您能解释一下这是什么原因吗?您尝试做的事情很可能被误导了。表单必须在UI线程上创建,因此,如果花时间来执行创建,则无论何时进行操作,您都将仍然保留UI。如果问题是在检索数据或类似数据,则可以将其拆分并在辅助线程上执行。没有上下文,就不可能不加猜测地说出什么是最好的解决方案。
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
一般来说,您将在显示表单之前立即创建一个表单。
您是否认为这个话题不言而喻地回答了自己?并且发布者知道如何实例化,在这种情况下;可能也知道在哪里使用实例化的对象。我认为,从OP的角度来看,这个话题很明显。我什至回答也感到不高兴。  ðŸ〜’
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
您是否认为这个话题不言而喻地回答了自己?并且发布者知道如何实例化,在这种情况下;可能也知道在哪里使用实例化的对象。我认为,从OP的角度来看,这个话题很明显。我什至回答也感到不高兴。  ðŸ〜’
在我看来,OP希望在某个时候创建​​一个表单,然后在以后某个时候显示它。如果真是这样,那么很可能会被误导。我想确定他们是否想要这样做以及为什么他们认为这是个好主意。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
嗨,抱歉,不清楚。我希望在程序启动时实例化Form2的原因是,当Form2最终显示时,form2上存在一个控件(列表框),该控件将接收数据并从Form1(文本框)上的控件填充数据。希望可见Form2列表框中的所有信息,否则(我认为)该列表框将仅在显示Form2时变为活动状态并从Form1接收数据。我希望Form2处于完全活动状态并在后台运行,直到用户希望显示它为止。

如此一来,数据就可以在后台收集,直到显示出来为止,这样实例化的最佳/合适位置在哪里?

对于任何认为我正在拖钓的人,对不起,我没有适当说出我的问题。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
您应该做的是添加来自 Form1 到某种列表,然后填充 列表框 从那时开始 Form2 创建并显示。

当显示Form2时,我继续使用列表填充列表框吗?即使在显示Form2之后,列表框也将需要不断添加内容。如果要使用列表,那么就是列表。谢谢。
 

羊皮

知名会员
已加入
2018年9月5日
留言内容
1,982
编程经验
10+
由于form2不需要立即显示。约翰建议您添加一个列表<T>改为form1或一个存储类。填充列表<T>,当您准备使用form2时,可以实例化它,然后传输列表中的所有值<T>到form2列表框。

请注意,如果用户不需要与form2上的列表框进行交互,则只需使用列表即可<T> instead.
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
在不了解具体情况的情况下,很难知道最好的行动方案。一种选择是使用 装订清单<T>Form1 然后你传递给 Form2 并绑定到 列表框 。然后,您可以继续以第一种形式将项目添加到列表中,它们将自动显示在第二种形式中。
 

玻璃杯

知名会员
已加入
2019年11月22日
留言内容
126
编程经验
Beginner
好的,我将提供更多详细信息,Form1有一个TextBox,Form2(历史记录窗体)有一个ListBox,TextBox将在更新时(不活动一秒钟后)发送其文本字符串,并且ListBox将与文本作为新项,即列表框只是在文本框中键入内容的历史记录。按下按钮将显示历史记录表单,因此用户甚至可能根本不想查看历史记录,但是无论用户是否在乎,我都需要始终保持历史记录为最新状态。如果用户确实显示了历史记录表单,我希望他们能够双击列表框项之一并将其发送到文本框。

希望那里有足够的信息,我想不出任何其他有用的信息,但请告诉我是否有。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,566
地点
悉尼,澳大利亚
编程经验
10+
在这种情况下,请按照我的建议进行操作。让第一个表单保留自己的历史记录,然后在打开表单时将其传递给第二个表单。如我所说,如果您使用 装订清单<T> 那么您可以继续以第一种形式添加项目,任何绑定的控件都会自动更新。我建议将构造函数添加到采用 装订清单<T> 作为参数并将其绑定到 列表框 。您应该取消绑定 表格已关闭 event handler.
 
最佳 底部