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