从刚开始的学习C#,到中途项目打断,到重新拾起,发现不给自己压力是不行的,现在准备通过项目的方式来促进自己。
    第一个项目就用一个平台框架来锻炼,我会尽量在每天做出相应更新。
    平台的主窗体如下,另外用户登录的窗体我暂时把它作为文件菜单下的重新登录窗体。
本次学到的知识点有下面几个:
1、菜单栏
       菜单栏的设计不想讲太多,主要它很多的设计直接在窗体设计的时候,可以直接自己手动调整。
       唯一提醒的就是窗体的IsMdiContainer属性,这个跟在Delphi中设置父窗体和子窗体是一个意思。
2、状态栏
      在状态栏,我要说三个地方:
      a、设计间隔:在C#中状态栏和菜单栏里面将几个栏目分离显示,不能够直接通过拖动或设置属性来达到目的。这一点我感觉没有Delphi方便。
             它必须是通过statusStrip的Item属性里面添加栏目,然后设置栏目值为" | "。(也许有其他方法,我是新手,如果有更好的方法请提醒我,谢谢!)
      b、获取本机IP:Winform程序中经常会在状态栏显示本机IP地址,以此来提示用户。         
     在窗体的Load事件中写下如下代码:
InBlock.gif private void MainFrm_Load( object sender, EventArgs e)
InBlock.gif                {
InBlock.gif                        StripIp.Text                 = "本机IP地址:" + GetComputerIp();
InBlock.gif                }
     获取IP的函数:
InBlock.gif private string GetComputerIp()
InBlock.gif                {
InBlock.gif                         string HostInfo="";
InBlock.gif                        System.Net.IPAddress[] IpList = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList;
InBlock.gif                         for ( int i = 0; i < IpList.Length ; i++)
InBlock.gif                        {
InBlock.gif                                HostInfo += IpList[i].ToString(); //这边要注意给HostInfo赋初值,不然报错
InBlock.gif                                
InBlock.gif                        }
InBlock.gif                         return HostInfo;        
InBlock.gif                }
      c、获取系统时间,并保持变更:在状态栏显示时间也是个常用功能。
在界面上拖一个Timer控件,并在它的tick事件里面写如下代码。
InBlock.gif private void TimeShowsystemtime_Tick( object sender, EventArgs e)    
InBlock.gif                                {    
InBlock.gif                                                StripTime.Text = "系统当前时间:" + DateTime.Now.ToString();    
InBlock.gif                                }
然后在主窗体的Load事件中写如下事件,那么功能就能够实现了。
InBlock.gif private void MainFrm_Load( object sender, EventArgs e)
InBlock.gif                {
InBlock.gif                        StripTime.Text             = "系统当前时间:"+ DateTime.Now.ToString();
InBlock.gif                        TimeShowsystemtime.Interval = 1000;
InBlock.gif                        TimeShowsystemtime.Start();
InBlock.gif                }                
    
3、弹出窗体
    在主窗体“文件”菜单下,有重新登录窗体。
    在“重新登录”的click事件中写下如下代码:
private void MenuLogin_Click(object sender, EventArgs e)
        {
            frmLogin NewLogin = new frmLogin();
            NewLogin.ShowDialog();
        }
     登录界面上的label设置透明的属性是将BackColor设置为Transparent。
 
上面就是这次的部分学习,现在贴出来,下次会在次完善其他功能。
另外有如下问题提醒自己思考:
1、IP地址的获取方式是否还有其他方法;外网的获取;Mac地址的获取。
2、子窗体的弹出,除了上面的还有其他的方式,哪种方式最好?如何判断只显示一个子窗体?如果显示多个子窗体后,如何实现排版?