小编Cor*_*vin的帖子

在Main()方法中捕获异常

请考虑以下简单应用程序:由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运行还是从命令行运行而有所不同?确保应用程序中未处理任何异常的最佳做法是什么?

.net c# windows visual-studio winforms

6
推荐指数
2
解决办法
2554
查看次数

寻找在WinForms应用程序中使用自定义字体定义的最佳方法

我有一个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元素显式调用字体解析方法?

c# user-interface winforms

5
推荐指数
1
解决办法
252
查看次数

标签 统计

c# ×2

winforms ×2

.net ×1

user-interface ×1

visual-studio ×1

windows ×1