.NET20 一种简单的窗口控件UI状态控制方法

C#.NET实现窗口控件信息获取工具详解 回顾整个旅程,我们从一个简单的句柄出发,穿越了消息循环、安全隔离、文本提取、自动化框架等多个层次,最终构建出一套完整的GUI信息采集能力。但这不仅仅是为了炫技。在真实的工业场景中,这些技术正在默默发挥作用:- 🧑‍🦯 视障人士依靠屏幕阅读器浏览网页;- 🏭 测试工程师用自动化脚本验证上千个UI路径;- 🔐 安全团队分析恶意软件界面行为以制定防御策略;- 🛠️ 开发者调试复杂第三方控件的渲染异常……它们共同的起点,就是那个不起眼的HWND。 阅读详情

Csdn dotnet blog 专家群   ly4cn

我们经常需要控制窗口控件的状态。比如,在某些情况下,需要禁止一部份控件,或让一部份控件呈只读状态等等。
        假如有如下的窗口:
       

        当按下Enable时,左侧的所有控件都要禁止(Enabled=false),当按下Disable时,左侧的所有控件都取消禁止(Enabled=true)。
        通常的作法是直接用代码来控制:    

         private   void  EnableOrDisable( bool  isEnabled)
        
{
            
this.button1.Enabled = isEnabled;
            
this.checkBox1.Enabled = isEnabled;
            
this.comboBox1.Enabled = isEnabled;
            
this.textBox1.Enabled = isEnabled;
        }


        
private   void  btnEnable_Click( object  sender, EventArgs e)
        
{
            EnableOrDisable(
true);
        }


        
private   void  btnDisable_Click( object  sender, EventArgs e)
        
{
            EnableOrDisable(
false);
        }


        这样的作法,在一些简单的逻辑控制倒也行的通。但是一旦控件的数量比较多,而控制逻辑也比较复杂的时候,类似EnableOrDisable的函数将会变得很多,而且很复杂、不直观。
        本文介绍一种方法,可以在RAD可视化设计界面中直接指定控件的状态,并只用很简单的代码来切换状态。



        首先,定义一个类UiState,类中只有一个属性“IsEnabled”,用于指定当前控件的禁止状态:

     class  UiState
    
{
        
private bool isEnabled;

        
public bool IsEnabled
        
{
            
get { return isEnabled; }
            
set { isEnabled = value; }
        }
 
    }



        然后编译。必须编译一次,否则RAD界面不知道有这个类存在。
        接下来,到DataSources侧栏中点“增加新数据源”,并在向导中选择“Object”,按下一步:

 

        选择“UiState”,按“Finish”:

 

        再回到窗口的设计界面,依次设置需要改变状态的控件。
        如下图,选中某个控件,到属性页中,展开(DataBindings),启动(Advanced)设置窗口,选择“Enabled”属性,并在Binding中选择“uiStateBindingSource - IsEnabled”。
 

        如下图,可以在设计窗口检查绑定状态:

 

        最后增加Enable和Disable按钮的处理函数: 

         private  UiState uiState  =   new  UiState();

        
public  Form1()   //  构造函数
         {
            InitializeComponent();
            uiStateBindingSource.DataSource 
= uiState; // 必须!!!
        }


        
private   void  EnableOrDisable( bool  state)
        
{
            uiState.IsEnabled 
= state;
            uiStateBindingSource.ResetCurrentItem();
        }

        
private   void  btnEnable_Click( object  sender, EventArgs e)
        
{
            EnableOrDisable(
true);
        }


        
private   void  btnDisable_Click( object  sender, EventArgs e)
        
{
            EnableOrDisable(
false);
        }

 

        运行,测试OK:
  
 
        总结:
        对于简单的控制逻辑来说,硬编码的方式比较适合。
        但对于稍微复杂一些的控制逻辑来说,还是这种方式比较适用。因为这种方式比较灵活,并且可以直观的在设计界面上进行修改,代码也显得简洁,可读性强。
        遗憾的是,菜单项和工具栏项不是可绑定的,所以本文介绍的方式无效。而通常使用中,菜单和工具栏偏偏又是控制逻辑最复杂的。唯一的办法,只能是自定义一个Actions控件,并采用本文类似的逻辑,通过Reflection机制对菜单项和工具栏进行绑定。Delphi的Actions控件就做的相当不错。

看更多.net新闻分析 到dotnet频道 (http://dotnet.youkuaiyun.com/)。

掌握VB.NET用户界面设计:DotNetMagic库与SampleDocking源码解析 用户界面(UI)设计是软件开发中的一个关键环节,它直接关系到用户如何与程序进行互动。良好的UI设计可以提高用户体验,使程序更加直观易用。在设计原则方面,我们主要从以下几个方面进行深入探讨:清晰性:界面必须清晰地展示信息,确保用户可以一目了然地理解软件的功能和状态。一致性:界面的元素和操作在整个应用中应保持一致,避免用户产生混淆。最小化用户操作:尽量减少用户完成任务所需的步骤数量,提高效率。反馈与响应:对于用户的操作,系统应立即给予反馈,并正确处理用户的请求。 阅读详情

相关推荐

深入理解C# UI编程:超30个UI组件控件源码剖析

在现代软件开发中,用户界面(UI)组件是构建应用程序不可或缺的元素。了解和掌握UI组件的源码可以极大提升开发者的效率和应用程序的质量。本章旨在为读者提供一个学习UI组件源码的全面概述,旨在帮助开发者建立坚实的基础,以便深入学习后续章节中关于C# UI编程、自定义控件设计、事件处理、数据绑定、性能优化等高级主题。在Windows窗体应用中,绘制通常在控件的绘图事件中进行,例如Paint事件。通过重写控件的OnPaint方法,可以在其中调用Graphics对象的绘图方法来执行自定义绘图逻辑。

weixin_42611177的博客 1096

visual studio 2005安装文件打包.net framework框架.

用VS2005自带的,建Setup,右击Setup项目,在弹出的对话框中选“系统必备”,然后找到networkframe 2.0,再选择“从安装目录所在的目录下下载”,即可 。

我是一棵树 1982

.NET界面开发:DevComponents.DotNetBar2控件库实战教程

NET控件库是构建在.NET框架之上的一个封装好的、预定义的用户界面元素集合。这些控件不仅提供了丰富的用户界面功能,而且简化了开发者在应用程序中实现复杂用户界面的过程。本章将带你概述.NET控件库,从它的基础架构讲起,延伸至其基本使用场景及优势。对Ribbon Bar控件的自定义是一个涉及多个方面的过程,以下是一些常见的自定义方法:添加或移除功能标签:根据应用的功能需求,可以添加新的标签,或者移除不需要的标签。修改组和命令。

weixin_30789053的博客 1342

关于窗口状态变化(显示、关闭、最小化、最大化等)的快捷键

窗口状态变化的快捷键1、Alt 键组合2、Windows 徽标键 1、Alt 键组合 Alt + F4 ———— 关闭当前程序 Alt + 空格 + C ———— 关闭窗口 Alt + 空格 + N ———— 最小化当前窗口 Alt + 空格 + R ———— 恢复最小化窗口 Alt + 空格 + X ———— 最大化当前窗口 Alt + 空格 + M ———— 移动窗口 Alt + 空格 + ...

morgan363的专栏 12万+

构建硬件控制应用程序的数字上/下控件指南

WinForms中的窗体设计器是一个强大的工具,允许开发者通过可视化方式拖放控件,设置属性以及处理事件。以下是一些窗体设计器的使用技巧:使用“工具箱”添加控件:窗体设计器左侧是工具箱,包含所有可用的WinForms控件。可以从中拖动控件到窗体上。利用“属性窗口”调整控件属性:选中窗体上的控件后,属性窗口会显示出该控件的所有可配置属性。可以在这里调整控件的外观和行为。

weixin_35752122的博客 349

构建自定义滑动按钮控件:VB.NET与C#.NET实现

自定义控件是软件开发中提高代码复用、优化用户界面体验的重要手段。在本章中,我们将探索自定义滑动按钮的设计理念、功能扩展以及如何实现更具吸引力的视觉效果。自定义控件的设计应当始于需求分析,确切地理解控件在应用场景中所扮演的角色。需求分析通常包含以下几个方面:功能需求:控件要实现哪些基本功能,如值的范围、增量、触觉反馈等。性能需求:控件的响应速度、内存占用、CPU占用等。用户体验需求:控件的交互是否直观、流畅,是否与用户界面设计一致。兼容性需求。

weixin_31641077的博客 1195

.NET2.0 一种简单的窗口控件UI状态控制方法

我们经常需要控制窗口控件的状态。比如,在某些情况下,需要禁止一部份控件,或让一部份控件呈只读状态等等。         假如有如下的窗口:                 当按下Enable时,左侧的所有控件都要禁止(Enabled=false),当按下Disable时,左侧的所有控件都取消禁止(Enabled=true)。         通常的作法是直接用代码来控制:         

Milozsj的专栏 770

VB.NET中的WebBrowser控件应用实践

WebBrowser是VB.NET中用于在应用程序内部显示网页的一个ActiveX控件。它基于Internet Explorer的渲染引擎,允许开发者以编程方式导航到网页、执行网页功能并实现与网页内容的交互。

weixin_35748962的博客 1051

Essential Tools for ASP.NET用户界面控件包控件详细介绍及下载地址

Essential Tools for ASP.NET是一款专业的用户界面控件包,包含了菜单、工具条、TreeView、各种编辑框、提示信息控件、tab控件、导航控件等。使用该控件可以为你创建专业的交互式应用程序,完全支持AJAX。 具体功能: 停靠面板控件: 完全自定义面板外观 支持拖拉模式,水平和垂直分布 支持服务端和客户端事件 内嵌多种分割条样式 支持设计时设计

报表控件 1197

ASP.NET官方网站第三方组件(WebUI ASP.NET2.0)

直接安装,内带.DLL文件 和所有DEMO的工程。 官方网站下载 最近版本 我刚刚还在用,骗人是SB。

Windows安装ros2(Jazzy版本+win10/win11)-1.配置windows终端

更高版本的terminal可能设置里更加丰富, 有默认以管理员身份启动的选项等,可自行配置。打开微软应用商店, 在其中搜索并下载 Terminal 即可(注意别挂梯子)下载并安装, 安装的位置自行替换,建议别放到系统盘中。点击任务栏中的搜索, 输入store。

weixin_48398592的博客 1454

asp.net中父窗口调用子窗口并给子窗口的元素赋值或改变状态

一、第一种方法:通过父窗口直接写子窗口的元素 function assgVal() { jskh_str = "张三"; wfpjkh_str = "李四"; wfpjdw_str = "xxx物流有限公司"; var xgr_str = "<%= Session["xx_user"]%>"...

hmwz0001的博客 490

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

UI的优化之ToolTip控件的使用

大家在使用电脑的时候可能都注意到一个现象:当鼠标指向图片或者汉字的时候,旁边会出现提示文本,如图:    这样的效果实现起来其实很简单,需要用到ToolTip控件。下面简单介绍一下ToolTip及其简单用法。    简介:

炸丸儿 3764

用Python实现图片风格迁移,让你的图片更加的高逼格!

先来看下效果: 上图是老王在甘南合作的米拉日巴佛阁外面拍下的一张照片,采用风格迁移技术后的效果为: 一些其它效果图: 下面进入正题。 近年来,由深度学习所引领的人工智能(AI)技术浪潮,开始越来越广泛地应用到生活各个领域。这其中,人工智能与艺术的交叉碰撞,在相关技术领域和艺术领域引起了高度关注。就在上个月,由电脑生成的艺术品在佳士得(Christie’s)的拍卖价竟高达43.25万美元,...

Python追梦 6181

开源代码分享(29)-基于拉丁超立方抽样的风光场景生成和削减

作为分层抽样方法的一 种,拉丁超立方抽样具有良好的抽样精度和效率[14]。本文使用多场景方法来描述可再生能源(风电、光伏)的不确定性。以风电功率为例,首先假定风电功率服从正态分布 N(μ, δ 2 ),μ 为预测值的期望值,δ 为其波动的百分比。接着,采用拉丁超立方抽样[21]生成大量服从概率分布约束的风电出力场景,并采用考虑 Kantorovich 距离[22]的场景削减技术处理该场景,进行场景削减。最后,导出具有相应概率的削减之后的场景。

配电网和matlab的博客 923

工业软件缺好 UI?这套 .NET 控件库从 IO 灯到圆角按钮全搞定

项目已包含 UIIOlight(IO 状态指示灯)、UIIconListBox(带图标列表框)、UIButton(自定义圆角按钮)等多个核心组件,每个都经过精心设计,兼顾功能性与易用性。聚焦于运动控制、机器视觉、设备监控、PLC 通信等典型工业场景,提供一系列开箱即用、高度可配置的专业控件。其轻量化、可定制与线程安全的特点,使其成为运动控制、视觉检测等场景下不错的选择和参考。今天推荐一个针对工业场景专用控件库,它通过模块化设计、多语言支持及高性能渲染技术,为工业软件开发提供一套开箱即用的解决方案。

dotNET跨平台 177

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1024
上一篇: 对Web平台和软件架构的一些看法
下一篇: asp.net报表解决方法
dotnetgroup
博客等级 码龄21年 2粉丝 83原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值