最近写的一个小程序
最近受同学的托付,帮他写一个应用于交通事故计算车速的软件,我C#刚刚入门,想了想还是硬着头皮接了这个活,编了一个菜鸟级应用。

这是主界面~

选择界面

计算界面

结果界面
初步设想:
初步的设计意图是在选择页面的combobox里选择一种事故类型,然后弹出计算界面,然后输入参数,在计算的同事关闭计算界面,弹出计算结果界面。运行时选择界面是一直存在的,所以计算结果中的“个返回事故类型选择”按钮其实就是一个this.close(),因为关闭了当前的窗口就能看到选择界面了。
实现过程中遇到的问题:
1.首先,我是用VS2010进行编辑的,所以一开始没注意选择framework的版本,默认的是4.0,后来我同学的机器装了framework 4.0还是不能运行,只能再更改版本,再调试,运行,费了很多事,以后要注意这点。
2.在实现关闭计算界面的同时打开计算结果界面时,遇到一个问题。不能简单的用this.close()来实现。因为弹出下一个窗口的XXX.ShowDialog()是在当前窗口的类中实现的,当前窗口关闭之后,这个XXX.ShowDialog()也就无从谈起了。请教了别人以后,用了这样一段代码来解决:
if (m_V1 < 0 || m_V2 < 0)
{
Thread th = new Thread(delegate() { new ErrorForm().ShowDialog(); });
th.Start();
this.Close();
}
else
{
Thread th = new Thread(delegate() { new Results(m_V1, m_V2).ShowDialog(); });
th.Start();
this.Close();
}
即当算出的车速小于0时,弹出错误窗口(按设计文档小于0是不允许的)。否则弹出计算结果界面。
这里运用了Thread类,创建一个新的进程,将计算结果界面放在一个新的进程中,这样关闭计算界面(即创建计算结果的界面)就没有影响了。
3.想在C#中实现预处理命令,因为程序中需要定义重力加速度g,可能会按情形改变g的值,取9.8或10,但是摸索了半天,最后还是用一个静态类来解决了问题。
namespace TransAccident
{
public static class Variable
{
public static double G=9.8;
}
}
4.因为计算结果想要在新窗口中显示,所以想要将计算结果传出来。所以设计了两个属性。
private double m_V1;
private double m_V2;
public double V1
{
get { return m_V1; }
}
public double V2
{
get { return m_V2; }
}
这就是我的C#初探,希望下次可以做的更好~
加油,YQ~~

浙公网安备 33010602011771号