现在的位置: 首页 > 综合 > 正文

实习总结:c#开发之旅(一)winform 基础。

2014年09月05日 ⁄ 综合 ⁄ 共 1786字 ⁄ 字号 评论关闭

连续看了两天的某大型数据管理系统的代码,感觉现在有点头晕眼花的,刚开始我是在main函数入口处设置断点,然后将程序跑起来看看程序运行的顺序,结果各种函数的跳转和类的new马上就把我搞晕 了。后来是直接让程序跑起来,在触发过断点的调试状态下运行程序,如果触发事件,程序是可以自己停下来的,这样我就知道了那些功能到底是在哪里实现的,也可以在运行的过程中点击暂停,用f10开始跑起来,方便定位。

看到现在,也差不多有了一个大概的印象,其实结构倒不是很复杂。里面界面、模块虽然多,但事实上都是很简单的平行关系,并不涉及到复杂的组装,嵌套。整体布局是比较流行的ribbon布局,主界面把各模块的位置分好,功能界面使用splitContainerControl来切换,

如上图,右边是很多的功能模块,主界面需要哪个功能显示在当前最上层,只需要调用 this.splitContainerControl.Panel2.Controls.Add(new TrimLittleFiles());

TrimLittleFiles为右边众多模块的一个类的实现,这个类继承了System.Windows.Forms.UserControl,所以可以直接被加载进入Controls集合里面。TrimLittleFiles设计一般遵循mvc设计思想,只包含控件的展示和数据的输入输出,类似于观察者模式中的facader。

这里推荐一个很好的设计模式----单例模式----以避免窗体的重复实例化。

比较常见的方法是null值判断,声明一个UCForm的全局变量,add之前检查null和dispose避免重复添加,

但设计模式里面给出了一个更简单的解决方案——单例模式:

private staticreadonlyucMyWebBrowserMyInstance=newucMyWebBrowser(); 静态对象,由CLR初始化

  

       public
static
ucMyWebBrowserucMyInstance             静态属性 对象唯一的访问途径

        {            get{
return
MyInstance;}        }      没有set方法

  private 
ucMyWebBrowser
()                                      
 
将构造函数声明为私有

        {            InitializeComponent();        }

使用该类的对象的时候,只需直接使用ucMyWebBrowser.ucMyInstance  即可,无需做其他判断,且无需维护它的引用(因为是静态的)。

          

两个窗体之间传值:     F1中SubForm1sf=new
SubForm1(this);,将F1的引用传递给sf

F1中声明了public的get和set方法,在sf中,通过传递过来的引用,可以随时调用get和set方法,达到传值的目的。

一句话备忘:

1,Combobox通过item增加子项,select index 没有选择是-1 。 item从0开始计数,

2,if (openFile.ShowDialog()==
DialogResult.OK)//貌似只有winform能用,wpf是用不了的

3,Using里面声明的对象必须实现Idispose

4,StreamWriter
sw
= File.CreateText(“    e:\temp\targer.txt    ”);

              Writeline   sw.Flush();  
sw.Close();

5,窗体的缩放版式设计,有三个关键点,

anchor:距离父控件边界的距离,

dock:充满,

“置于顶(底)层”:谁覆盖谁

6,string[]
strs
= str.Split(':'); 

Split 意思是以“:“分裂str成若干个字符数组

            string[]strs2 =strs[1].Split(newchar[]{'
'
,' '} , 2,StringSplitOptions.RemoveEmptyEntries);

继续用‘ ’(空格)分割,同时注意第三个参数,意思是去掉为空的strs2[]子项(如果不这样做,会得到几十个为””的string)

 

 

抱歉!评论已关闭.