最近写的一个小程序

  最近受同学的托付,帮他写一个应用于交通事故计算车速的软件,我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~~

posted @ 2011-07-31 22:02  润物细无声NNU  阅读(355)  评论(0)    收藏  举报