您的位置:首页 > 其它

学生信息管理系统

2016-05-11 14:38 295 查看
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事件,然后整个应用程序会被终止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: