学生信息管理系统

StudentInfo里面的第一层里面的类已经建好了。
StudentDAL里面第一层也建好了
App.Config详解如果项目以前没有配置文件,则默认的文件名称为“ app.config ”,单击“确定”。出现在设计器视图中的app.config 文件为:

<? xml version = "1.0 "encoding = "utf-8 " ?>
< configuration >
</ configuration >
```可以设置数据库信息,比如字符串参数,数据库用户名密码,有些数据库可能不需要密码
**添加文件夹**直接把文件夹拖进去刷新然后包括在项目中。
**STAThread**简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。
**Application**Application   类属于System.Windows.Forms 命名空间。
1.publicstaticvoidEnableVisualStyles():此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles
生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是 Main 函数的第一行。当调用 EnableVisualStyles
时,无需单独的清单即可启用可视化样式。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
简单的说就是让你的控件(包括窗体)显示出来。
2.
Application.SetCompatibleTextRenderingDefault(false)大意如下:
(1).作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ ,还是旧的GDI)
true使用GDI+方式显示文本,
false使用GDI方式显示文本.
(2).只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法.
(3).只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常.
GDI:GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。
GDI+(Graphics Device Interface plus)是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。
**ThreadException和unhandledException**处理未捕获的异常是每个应用程序起码有的功能,C#在AppDomain提供了UnhandledException 事件来接收未捕获到的异常的通知





<div class="se-preview-section-delimiter"></div>

staticvoid Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

staticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception error = (Exception)e.ExceptionObject;
Console.WriteLine(“MyHandler caught : “+ error.Message);
}
“`
未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:
[STAThread]
staticvoid Main()
{
Application.ThreadException +=new ThreadExceptionEventHandler(UIThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new ErrorHandlerForm());
}

privatestaticvoid UIThreadException(object sender, ThreadExceptionEventArgs t)
{
try
{
string errorMsg =”Windows窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + t.Exception.Message + Environment.NewLine + t.Exception.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的Windows窗体异常,应用程序将退出!”);
}
}

privatestaticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
string errorMsg =”非窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的非Windows窗体线程异常,应用程序将退出!”);
}
}

```
staticvoid Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

staticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception error = (Exception)e.ExceptionObject;
Console.WriteLine("MyHandler caught : "+ error.Message);
}

未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:

[STAThread]
staticvoid Main()
{
Application.ThreadException +=new ThreadExceptionEventHandler(UIThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new ErrorHandlerForm());
}

privatestaticvoid UIThreadException(object sender, ThreadExceptionEventArgs t)
{
try
{
string errorMsg ="Windows窗体线程异常 : \n\n";
MessageBox.Show(errorMsg + t.Exception.Message + Environment.NewLine + t.Exception.StackTrace);
}
catch
{
MessageBox.Show("不可恢复的Windows窗体异常,应用程序将退出!");
}
}

privatestaticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
string errorMsg ="非窗体线程异常 : \n\n";
MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
}
catch
{
MessageBox.Show("不可恢复的非Windows窗体线程异常,应用程序将退出!");
}
}

除了Windows窗体程序,再来说一下WPF程序。WPF的UI线程和Windows的UI线程有点不一样。WPF的UI线程是交给一个叫做调度器的类:Dispatcher。代码如下:
public App()
{
this.DispatcherUnhandledException +=new DispatcherUnhandledExceptionEventHandler(Application_DispatcherUnhandledException);
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

    void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        try
        {
            Exception ex = e.ExceptionObject as Exception;
            string errorMsg ="非WPF窗体线程异常 : \n\n";
            MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
        }
        catch
        {
                MessageBox.Show("不可恢复的WPF窗体线程异常,应用程序将退出!");
        }
    }

    privatevoid Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {
        try
        {
            Exception ex = e.Exception;
            string errorMsg ="WPF窗体线程异常 : \n\n";
            MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
        }
        catch
        {
                MessageBox.Show("不可恢复的WPF窗体线程异常,应用程序将退出!");
        }
    }

“`
无论是Windows窗体程序还是WPF程序,我们都看到捕获的异常当中分为”窗体线程异常”和”非窗体线程异常”。如在Windows窗体程序中,如果在窗体线程中,

thrownew Exception(“窗体线程异常”);
将会触发ThreadException事件。

Thread t =new Thread((ThreadStart)delegate
{
thrownew Exception(“非窗体线程异常”);
});
t.Start();
将会触发UnhandledException事件,然后整个应用程序会被终止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值