什么是表单构造函数和form_Load方法之间的区别?
什么是你把物品放在一个与另一个相比的过程?
我希望有人尝试解释这些之间的区别.更具体地说,示例使用场景.
我正在重构一些Windows窗体代码,并且Form在Form_Load()事件中有一些代码,并且在protected override void OnLoad()调用的事件中base.OnLoad(e); 我现在跟踪它并且首先触发Override,然后立即触发事件版本.
那么,通常使用哪一个?为什么?
当表单加载时,代码需要执行诸如设置数据网格,组合框,设置标题等操作.我倾向于始终使用加载事件而不是新的(构造函数).是否有哪些指南最适合哪些活动?
我曾经在构造函数中调用异步方法(触发和忘记?)
Task.Run(async () => await CallAsync());
Run Code Online (Sandbox Code Playgroud)
我听说最好使用ICommand它来执行它。
ICommand MyCmd => new Command(async () => await CallAsync());
public MyClass()
{
MyCmd.Execute(null);
}
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
我无法弄清楚这里的问题是什么。我从头开始项目,去调试,并收到错误:
System.InvalidOperationException 未处理 Message=创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:未将对象引用设置为对象的实例。
我不明白为什么在自动生成的文件中会发生此错误。这是完整的代码:
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.269
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' …Run Code Online (Sandbox Code Playgroud) 我有一个构造函数:
public Form1(string startDate, string endDate, string cbQCValues,string cbAnalytes, string cbInstruments,bool copy_of_form)
{
InitializeComponent();
dateStart.Value = Convert.ToDateTime(startDate);
dateEnd.Value = Convert.ToDateTime(endDate);
GenerateGraph();
}
Run Code Online (Sandbox Code Playgroud)
我也有一个onLoad
private void Form1_Load(object sender, EventArgs e)
{
string qcvalues_query = "SELECT DISTINCT name FROM qvalues ORDER by name";
string analytes_query = "SELECT DISTINCT compound FROM qvalues ORDER by compound";
string instruments_query = "SELECT DISTINCT instrument FROM batchinfo WHERE instrument <> '' AND instrument is not Null ORDER by instrument";
...
...
}
Run Code Online (Sandbox Code Playgroud)
什么先被执行?我需要确保首先执行onLoad
这是真的吗?
winforms ×4
.net ×3
c# ×3
constructor ×3
asynchronous ×1
events ×1
onload ×1
onload-event ×1
overriding ×1
refactoring ×1
vb.net-2010 ×1