请考虑以下简单应用程序:由VS中的"新C#windows应用程序"序列创建的窗口表单,该表单按以下方式修改:
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
MessageBox.Show("An unexpected exception was caught.");
}
}
Run Code Online (Sandbox Code Playgroud)
Form1.cs包含以下修改:
private void Form1_Load(object sender, EventArgs e)
{
throw new Exception("Error");
}
Run Code Online (Sandbox Code Playgroud)
如果我在IDE中按F5,那么,正如我所料,我看到一个消息框,说明异常被捕获并且应用程序退出.
如果我去Debug(或Release)/ bin并启动可执行文件,我会看到标准的"Unhandled exception"窗口,这意味着我的异常处理程序不起作用.
显然,这与从调用Application.Run的不同线程抛出的异常有关.但问题仍然存在 - 为什么行为会因应用程序是从IDE运行还是从命令行运行而有所不同?确保应用程序中未处理任何异常的最佳做法是什么?
我有一个Windows窗体应用程序,我需要在一个单独的文件中配置所有UI元素的所有字体.即我希望能够指定标签具有字体"TitleBarBoldFont",该字体将解析为真实字体,具体取决于当前的区域设置.配置文件可能包含相应的部分,如下所示:
<Font fontID="TitleBarBoldFont">
<Display facename="Helvetica" pointSize="12">
<Override lang="ja" facename="Meiryo Bold" pointSize="12"/>
<Override lang="zh" facename="SimHei" pointSize="12"/>
<Override lang="ru" facename="Arial Bold" pointSize="12"/>
</Display>
</Font>
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否有一种标准的.NET/Windows Forms方法来实现这一点,以便我可以在WinForms设计器中指定我的自定义字体,而不必为代码中的每个GUI元素显式调用字体解析方法?