一直都是做winform的程序,没人带,很多都不懂,现在越来越想问一问各位,大家都是怎么管理程序运行中各种状态,事件的。比如说吧,程序中有很多种状态,“读取记录,“实时显示”....在各种状态下当然程序上的控件,可用不可用都会发生变化,如何管理这些变化呢?我每次都写完都会乱,这样很容易出错,漏掉了之类的。我现在的做法是用一个int类型的量表示什么什么状态,然后来判断来管理界面
        private void Start_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < sddata.Length; i++)
            {
                if (sddata[i] != null)
                    sddata[i].Clear();
                first[i] = false;
            }
            if (status == 0)
            {   //如果之前是读取记录状态的话,清除之前的痕迹,重新搜索站点
                labelMaxEngery.Text = "最大值:";
                labelMinEngery.Text = "最小值:";
                labelAverage.Text = "区域平均值: ";
                labelIntegral.Text = "区域积分值:";
                刷新站点MenuItem.PerformClick();
            }}
求助各位,大家都是怎么做的!!给点经验介绍吧

解决方案 »

  1.   


            enum StatusType
            {
                Max,
                Min,
                Average,
                Integration,
            }          //不需要定义一个一个的布尔量来表示状态
                //自动根据枚举长度来定义BitArray长度
                BitArray statusArray = new BitArray(Enum.GetValues(typeof(StatusType)).Length);
                //写
                StatusType st = StatusType.Average;
                statusArray.Set((int)st, true);
                //读
                var val = statusArray.Get((int)st);
                //重置
                statusArray.SetAll(false);
      

  2.   

    int 不好,我是用枚举的Enum
      

  3.   

    同意bloodish的,一般都把各种状态定义在枚举里面,在创建一个ArrayBit来对每个枚举进行标识。ArrayBit是以位来分配内存的,这样做节省了不少内存空间。
      

  4.   

    statusArray.Set((int)st, true);
    第二个参数代表什么意思?