在做一项工程中,由于不确定目标平台的分辨率,而正常使用要求铺满整个屏幕,所以界面中的各个控件必须能够适应窗口的变化. 首先想到的就是控件的百分比布局,但是再尝试写了几个控件的Location和Size之后,发现这真是一项浩大的工程,方法是在太笨,不如将控件百分比布局作为一个类,专门来负责. 在网上找到了这种思想的代码 http://blog.sina.com.cn/s/blog_45eaa01a0101c7ko.html 经过测试是能够完成任务的,但是仍有一定的缺陷 1.我的界面中有控件动态的隐…
C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes和点击选中CheckBoxes时自动显示正行选中状态的单选功能. 效果图: 主要利用两个事件:listView1_ItemCheck和listView1_SelectedIndexChanged事件. 上代码: private void listView1_ItemCheck(object send…
本文主要针对MFC的dialog,实现控件随窗口大小变化. 原理:首先获取dialog的初始大小,当窗口发送变动时,调用OnSize事件和方法,计算缩放比例,然后对界面中的所有控件进行缩放和布局. 实现: 创建一个CMFCDemoDlg的dialog对话框: // CMFCDemoDlg 对话框 class CMFCDemoDlg : public CDialogEx { // 构造 public: CMFCDemoDlg(CWnd* pParent = NULL); // 标准构造函数 //…
控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现它.首先请看界面 在上面的界面中,本人想实现一个42个元素的Button数组来实现一个日历的功能,上面显示出了一部分. 其中采用了网格布局来放置这些按钮.手工创建为全部按钮后,在窗体类中代码中定义成员变量控件数组: private Button[] btns;然后在构造函数中初始化: btns =…
点击“视图”--“Tab键顺序”,然后便可设置.…
作用: 用于背景进程中.通过引发Timer事件,Timer控件可以有规律的隔一段时间执行一次代码.也就是,你可以根据你自己的需要,给Timer控件设置时间,Timer每隔这段时间,就执行一次代码. 属性: Enabled     控制当前Timer控件是否可用      timer1.Enabled=false;不可用  timer1.Enabled=true;可用 Interval     主要是设置timer2_Tick事件的时间,单位为毫秒      timer1.Interval=100…
1:button控件的生成方式 Button button = new Button(); button.Size = new Size(80, 80); button.Location = new Point(10, 10); button.Text = "aa"; this.Controls.Add(button); 注意:生成的控件需要添加到窗口的控件当中去,其实现代码his.Controls.Add(button);…
private RichTextBox FindControl()        { RichTextBox ret = null;            try            {                Control[] controls = Application.OpenForms["MainForm"].Controls.Find("txtContent", false);                if (controls != nul…
做机房系统时,几乎每个窗体中都会用到判断界面中的控件是否为空的情景.我们曾经是这样走来的: 第一版: 好处:对窗体界面中的Text等控件,逐一做判断,当用户输入某一项为空的时候,会议弹出框的形式,告诉用户,具体是哪一个控件,输入有误. 坏处:首先,界面看起来就很繁琐:其次,浪费了大量的手工工作,代码不具有可复用性:再次,编码的时候,如果控件数目比较多的话,容易忘记其中的某些控件. If (Trim(txtCardID.Text) = "" then'判断卡号是否为空 If Trim(t…
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先要告诉你,你再从自己的钱包把钱拿出来借给别人,这样就安全了 ----------------------…