大佬教程收集整理的这篇文章主要介绍了组织.NET表单中的UI代码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一会儿,我开始使用C#来开发GUI程序来控制传感器,并且项目已经开始了.我只是想知道如何最好地组织我的表单中的代码,特别是UI代码.
我的形式目前是一团糟,或者至少对我来说似乎是一团糟.
>我有一个构造函数来初始化所有参数并创建事件.
>我拥有一个巨大的州级财产,随着用户通过国家枚举控制的应用程序(即:断开连接,连接,设置,扫描),我更新了所有窗体控件的Enabled状态.
>我有通过属性访问的3-10个私有变量,其中一些在更改表单元素的值时具有副作用.
>我有很多“updateXXX”函数来处理依赖于其他UI元素的UI元素,例如:如果传感器被更改,则更改波特率下拉列表.它们分成几个区域
>我有很多事件调用这些更新功能
>我有一个后台工作者进行所有的扫描和分析.
我的问题是,这似乎是一团糟,特别是国家财产,而且是不可维持的.此外,我的应用程序逻辑代码和UI代码在同一个文件中,在某种程度上,混合似乎错误,意味着我需要做很多滚动来找到我需要的.
你如何构建你的.net表单?
谢谢
大多数UI模式(MVP,MCV等)都在尝试做同样的事情,分离您的疑虑.以下是一个简单的例子:
//视图界面
interface IUserDetailsView { String Username{set;get;} String FirstName{get;set;} String LastName{get;set;} UserDetailsPresenter Presenter{get;set;} void Displaymessage(String messagE); }
//视图隐含
//具有文本框,标签,组合等的标准窗体
class UserDetailsView : Form,IUserDetails { public String Username{set{txtUserName.text = value;}get{return txtUserName.text;}} public String FirstName{set{txtFirstName.text = value;}get{return txtFirstName.text;}} public String LastName{set{txtLastName.text = value;}get{return txtLastName.text;}} Public UserDetailsPresenter Presenter{get;set;} public void Displaymaessage(String messagE) { messageBox.Show(messagE); } private void saveButton_Click(object sender,EventArgs E) { Presenter.SaveUserDetails(); } }
//演示逻辑
课程Presenter UserDetailsPresenter
{
//Constructor public userDetailsPresenter(IUserDetailsView view) { //Hold a reference to the view interface and set the view's presnter _view = view; _view.Presenter = this; } private IUserDetailsView _view; DisplayUser(String userName) { //Get the user from some service ... UserDetails details = service.GetUser(userName); //Display the data vioa thE interface _view.UserName = details.username; _view.FirstName = details.FirstName; _view.LastName = details.LastName; } public void SaveUserDetails() { //Get the user dryaiols from the view (i.e. the screen UserDetails details = new UserDetails(); details.username = _view.UserName; details.FirstName = _view.FirstName; details.LastName = _view.LastName; //Apply some business logic here (via the model) if(!details.IsValidUserDetails()) { _view.Displaymessage("Some detail outlining the issues"); return; } //Call out to some service to save the data service.updateUser(details); }
}
//最后,模型
public class UserDetails { public UserName {get;set;} public FirstName{get;set;} public LastName{get;set;} public bool IsValidUserDetails() { if(LastName == "Smith") { //We do not allow smiths,remember what happened last time ... or whatever return false; } return true; } }
希望这解释了如何分离责任.该表单除了显示/格式化等之外没有逻辑,也可以被剔除进行测试.演示者是视图和模型之间的中介者,并调用服务,该模型会影响您的业务逻辑.如已经建议的那样,这种模式有变化,这可以使您的代码变得更加细腻,更灵活,但这概述了基本原则.我希望这有帮助.
以上是大佬教程为你收集整理的组织.NET表单中的UI代码全部内容,希望文章能够帮你解决组织.NET表单中的UI代码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。