从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

看评论有网友建议做视频,我考虑一下还是暂时不做吧,两点原因:

一是我做视频效率太低。我之前给我的产品做演示视频,每个视频反反复复要录十几遍才算满意,操作、解说要一气呵成,中间还不能有打扰,这个对我来说自由度太低。后期剪辑自己技术又不行,总之感觉做视频是负担,提不起兴趣。写文章要求就没那么多,随时有什么想说的就写上,可以反复阅读,利用碎片时间不断丰富内容,即便配Gif图1-2分钟就好了,很自由。

二是我觉得文章更适合学习。阅读是慢节奏的,大脑有时间思考;视频则只是被动地接收,大脑还没反应完下一个点又到了。涉及到演示的部分,文章也可以配动图,并不影响理解。

当然如果哪天你们发现我也开始做视频了也不用惊讶,人的想法也是会变的,不过至少现在我的想法还是认为文章要比视频性价比更高。

好了,本节继续我们前面计划要实现的分类管理界面。

我们现在程序运行一打开的就是一个Form1,这个Form1的由来,是因为我们创建项目的时候选择的是windows窗体项目,VS自动给我们给我们生成的。那我们现在需要自己创建一个类似的窗体,命名为CategoryManagerForm。

新增窗体过程:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

我把窗体标题直接改成了:分类管理对话框。以后所有新建内容都是类似,先正其名,名正则言顺。

下一步,我们需要把相应的控件都拖放到CategoryManagerForm中,需要哪些控件?这些控件分别是什么样的类型呢?我们要做下分析。

毫无疑问,这个分类管理页面肯定对应的是分类数据。

我根据以往项目经验,大概整理了下常用的数据与标准控件的对照关系,大家可以参考下:

其他还有很多形式,等具体用到了我们再详细说。

那我们现在分析下我们要进行管理的界面都是哪类数据:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

除了数据,我们还应该有两个按钮:

以上我们使用的是.net windows应用的标准控件,当然我们为了显示效果也可以用其他的第三方类库甚至是自己对标准控件进行改写,当然这也许我们未来要进行的系列,现在入门阶段,还是要以了解基本知识为主。

好了,窗体要用到的控件我们基本都计划好了,需要在界面中体现控件的我都用黑体标记出来了,不需要的变灰了,下面开始实操。

依次把相应的控件拖放到CategoryManagerForm窗体中,然后改名,具体过程不码字了,看动图:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

这里给大家说个操作上的小技巧:有些类似控件我使用了控件复制的功能。选中控件后,按住Ctrl键不放,然后鼠标拖动控件到其它位置,再松开,控件就被复制了,大小参数等信息都会被一起复制,自己再改下控件名称和位置就好了。

到此,分类管理的界面已设计完毕。接下来是可以从窗体的控件数据交互开始,也可以从分类管理界面与右键菜单联动开始,选择哪个呢?

我习惯于先做联动,一能够看到成果,二更方便调试。

要实现与右键菜单的管理,肯定要在右键菜单的代码处来写代码,需要把代码视图切换到Form1.cs。在解决方案视图,我们可以看到现在有两个窗体了:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

大家可以对比下CategoryManagerForm和Form1,CategoryManagerForm一看就知道是干什么的,Form1是干什么的?是不是突然感觉很莫名其妙?其实我已经忍了它好久了,只是一直没找到合适的机会修理它,这次先把Form1改成MainForm。改名过程:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

顺眼之后,我们切换到MainForm.cs(原Form1.cs)的代码视图,开始实现右键菜单与分类管理对话框的联动。

一、弹出分类管理对话框

预期的逻辑是这样:点击新建菜单,调出分类管理对话框,点确认按钮则继续添加节点,点关闭按钮或右上角的X则什么都不做。

代码如下:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

我们只在前面增加了两行代码,第一行是创建一个CategoryManagerForm的实例,第二行又是个新内容需要讲解一下:

判断逻辑就不讲了,讲下ShowDialog这个函数。

新手可能有点奇怪了,CategoryManagerForm是我创建的类,我也没有声明ShowDialog函数,为什么编译还能通过呢?我们请看CategoryManagerForm类的定义:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

看下类的后面有个 : Form的字样,表明CategoryManagerForm是从Form类继承下来的,继承是什么意思呢?这就涉及到了类成员访问类型的相关知识,这个知识点我在第五节的时候有稍微提了一下,这里讲深一点。

在类中可以定义每个类成员的访问类型。访问类型有三种:public,protected,private。

还是举个例子理解起来更容易些:

理解了类成员的访问类型,我们再回过头来看。既然CategoryManagerForm是从Form继承下来的,那也就是说Form中所有声明为public和protected的变量、函数等等都相当于在CategoryManagerForm做了声明一样,到底有哪些呢?在Form类上点鼠标右键,转到定义,就可以看到它的全部接口。看下面的动图:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

上图中我们可以看到,原来是ShowDialog被定义在了Form类中,访问类型为public。这个Form类被包含在了.net中的系统类库中,所以我们可以通过CategoryManagerForm直接访问,这下你明白了吗?

ShowDialog创建的是一个模态窗口。所谓模态窗口,在这个程序中,用户只能操作弹出的这个模态窗口,要想操作其他窗体,必须把这个模态窗口关掉才可以。

它的返回值是一个DialogResult类型的枚举值,枚举可以被看成是一堆常量的集合,较字符串的优势是在编译期间就可以发现无效值。DialogResult是系统定义的,我们可以转到定义,查看其枚举值如下:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

就是说,ShowDialog的返回值只有可能上面的几种,不可能是其他值了。

另外,这里还要再插播一下代码视图中快速定位代码的一个小技巧。代码视图上方的三个下拉框分别是该代码文件中的:命名空间、类、类成员,都是按字母排好序的,当成员变量多的时候可以快速定位。

理解以上之后,代码逻辑其实就很简单了,运行一下就可以弹出对话框了。

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

点击右键菜单的新建,分类管理界面成功被调出。但是我们发现,点确认和关闭按钮没有任何反应,只能点右上角的X才能退出。这是为什么呢?

因为我们的还未在CategoryManagerForm中做事件响应,而右上角的X已经在Form类中做好事件响应了。

二、CategoryManagerForm的确认和关闭

如果有了前面的基础,这个过程相对来说就比较简单了,直接上代码和动图:

从零开始系列,用C#做软件产品:私人日记(八)分类管理界面联动

需要说明的:

1)对按钮控件,在界面设计视图中双击鼠标就可以自动添加或定位到事件代码;

2)Close是Form类中函数,调用Close();可以直接关掉窗体;我在前面加的this就表示当前的类,不加也可以,我打这个主要是为了它能够提示后面的Close();

3)DialogResult同样是Form类中的变量,关闭后,ShowDialog就会把DialogResult的值作为函数返回值返回。

现在界面似乎是通了,但是我们调用分类管理对话框是为了获取分类数据的值,数据还没通。接下来该如何操作呢?下节我们继续。

近期事情比较多,尽量保证1-2天一更。

教程有帮助的话请大家帮忙关注、转发、扩散,能不能开专栏还需要你们的支持!

----------------------------------------------------

本教程已作为开源项目加入到Git,代码内容会随教程实时更新,大家有兴趣的话可以关注我,以获得最及时的更新。私信:私人日记 可以来获取Git的链接。

C#基本语法大家在头条搜索“菜鸟c#”,个人感觉这个网站还可以。

大家阅读过程中有哪些看不懂或未尽兴的地方,可以在评论区留言,我会先记下来在后续的教程中找机会再说。

展开阅读全文

页面更新:2024-03-18

标签:界面   窗体   视图   软件产品   控件   对话框   函数   按钮   私人   定义   成员   类型   代码   操作   教程   日记   系列   数据   科技   视频

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top