【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
? ? ? ? 对于上位机而言,窗口布局有很多种形式,单页面、多页面等等。不过,还有一种分类的方法,大家往往会忽视,那就是针对不同使用者,上位机中界面的开发也要有所区别。大家都习惯了把上位机当成专业软件,但是对于流水线上操作员、嵌入式设备的使用人员来说,这样的界面最好越简单越好,恨不得就是三个按钮,即成功、失败、错误。所以,软件中窗口怎么布局一定要考虑到最终的用户是谁,而不仅仅是根据开发人员自己的使用习惯来定义。
? ? ? ? 常用的界面基本就是菜单栏、工具栏、节点树、属性栏、作业界面、日志信息、状态栏这样的形式。菜单栏比较好理解,基本就和常用的windows一样。工具栏本身相当于快捷键,把一些常用的功能通过工具栏的方式快速呈现到用户的面前。节点树,一般就是软件需要操作的数据文件。属性栏,这是对节点的细节进行补充,相关的内容可以调整。作业界面,则是功能区域,也是软件和软件之间真正有差异的地方。日志信息,一般记录软件的运行信息,当然也包括错误信息。状态栏比较简单,主要记录软件的不同状态、版权信息和当前事件等等。
? ? ? ? 如果相关软件不是给专业人员使用的,而是生产人员、物流人员或者是一线的工人直接使用的,这个时候软件的布局最好简单、直接了解,输入的控件少一点,按钮类的控件多一点,甚至是主要的控件都布局成按钮也是没有问题的。此外,界面中间的MainFunction区域,这个时候也会变成Monitor区域,毕竟对于工人来说,他所要作的就是看任务进行到了哪一步,而不是再去精细化的配置和设置。
? ? ? ? 现在x86除了可以用于电脑之外,还可以用于小型工控机。所以相当于需要在嵌入式设备上面开发界面,正好主板又是windows系统,所以顺理成章也就用c#开发小型设备的操作界面了。上位机界面就是设备界面。无疑,嵌入式设备的界面肯定没有专业软件那么复杂,当然也不像生产线软件那么简单,难度和复杂度一般介于两者中间。
? ? ? ? 所以,通常这个时候我们一般用单页面来实现界面的功能。不过但界面中会有一个可以切换的body区域。这个区域可以根据按钮的选择灵活进行切换。左上角一般会有一个button,提示我们当前第二行的区域是主菜单还是子菜单,需不需要返回。右上角通常还有一个公司的logo。label则是设备名居多,中间的按钮代表各个子模块的功能。最后一个是status bar,多是记录事件、版权等信息。
? ? ? ? 需要注意的是,每次单击module之后,只有第二排的界面会发生改变,第一排和第三排基本保持不动,icon会变成一个按钮,这样方便给客户留一个提示。
? ? ? ? 除了软件主流程的功能之外,部分功能通常还需要进行参数的配置。这个时候,一个界面基本上就放不下了,所以也就需要另外启动一个window来进行配置。对于c# wpf来说,开发和启动子窗口都是非常方便的。首先我们需要创建一个带窗口的类,
? ? ? ? 创建好了之后,就会生成两个文件,一个是xaml文件,一个是c#文件。和MainWindow一样,xaml文件主要就是界面的设计,而c#则是代码逻辑的设计。做好了这一步,相当于子窗口就设计好了。那么,怎么在菜单或者按钮回调函数中激活子窗口呢,其实也简单,
private void Button1_Click(object sender, RoutedEventArgs e)
{
ChildWindow childWindow = new ChildWindow();
childWindow.ShowDialog();
}
? ? ? ? 这里假设子窗口的类是ChildWindow,首先我们实例化一个ChildWindow对象,接着调用这个对象的ShowDiaolog函数,这样就完成了子窗口的调用。
? ? ? ? 上面的几个case只是一种约定俗称的情况,当然遇到不同的场景,大家也可以灵活应对。关键一点,开发者需要深刻了解用户是谁,他们的习惯是什么样的,怎么让他们用起来更方便、更加得心应手,这是界面布局的根本目的。很多开发软件的同学要么精力全部放在了功能上,要么过于讲究整体的美观,不讲究易用性和便捷性,这都是不对的。