winform

Winform中设置ZedGraph的曲线为折线、点折线、散点图

六月ゝ 毕业季﹏ 提交于 2019-11-30 22:22:48
场景 Winform中设置ZedGraph的曲线为散点图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上面设置单条曲线为散点图后的思路,继续扩展设置曲线为折线、点折图、散点图。 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 读取配置文件内容获取设置的曲线样式后 LineItem myCurve = myPane.AddCurve(yList[i].Title, DataChartHelper.SetCurveText(interval, xAttribute.TitleKey, yList[i].TitleKey), System.Drawing.ColorTranslator.FromHtml(yList[i].Color), SymbolType.None); 根据配置文件设置曲线类型 myCurve = setCurveType(myCurve, yList[i].Type, yList[i].Color); 然后调用设置曲线样式的方法,在方法里 private static LineItem setCurveType(LineItem

c#winform自定义窗体,重绘标题栏,自定义控件学习

匆匆过客 提交于 2019-11-30 22:18:02
c#winform自定义窗体,重绘标题栏 虽然现在都在说winform窗体太丑了,但是我也能尽量让桌面应用程序漂亮那么一点点 话不多说,先上图 重绘标题栏 先将原生窗体设置成无边框,FormBoderStyle设置成None 然后添加一个panpel控件设置成窗体的的标题栏 然后添加四个Label控件充当标题和最小化最大化关闭按钮。 此时界面的原型就出来了。 完善窗体 当然原型出来了,肯定会让其它窗体继承这个窗体,难点就在于怎么让子窗体标题实时更新标题,我是这样做的 重写(override)j基类窗体的Text public override string Text { get => base.Text; set { base.Text = value; if (Title != null) { Title.Text = value; } } } 这样继承的时候就可以动态更新标题了 然后将最大化最小化关闭事件写一下就好了 自己添加了 关闭最小化和最大化按钮的属性 代码如下: private bool mvalueMin = true; [Description("是否关闭最小化窗体"), Category("控制")] public bool CloseMinButton { get { return mvalueMin; } set { mvalueMin = value;

(八十一)c#Winform自定义控件-时间轴

巧了我就是萌 提交于 2019-11-30 21:54:33
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub: https://github.com/kwwwvagaa/NetWinformControl 码云: https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492 来都来了,点个 【推荐】 再走吧,谢谢 NuGet Install-Package HZH_Controls 目录 https://www.cnblogs.com/bfyx/p/11364884.html 用处及效果 准备工作 没什么可准备的,直接开干吧。 思路: 2个panel,分别放标题和明细 然后重绘控件,在标题旁边画圆并且连线 开始 添加一个类来存放节点信息 1 public class TimeLineItem 2 { 3 /// <summary> 4 /// Gets or sets the title. 5 /// </summary> 6 /// <value>The title.</value> 7 public string Title { get; set; } 8 /// <summary> 9 /// Gets or sets the details

(七十九)c#Winform自定义控件-导航菜单

不打扰是莪最后的温柔 提交于 2019-11-30 20:48:06
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub: https://github.com/kwwwvagaa/NetWinformControl 码云: https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492 来都来了,点个 【推荐】 再走吧,谢谢 NuGet Install-Package HZH_Controls 目录 https://www.cnblogs.com/bfyx/p/11364884.html 用处及效果 准备工作 主要用的就是停靠窗体了, (十九)c#Winform自定义控件-停靠窗体 ,不了解的可以先去看一下 思路: 通过实体对象设置的对齐方式来实现左右对齐, 当鼠标进入一项的时候,判断是否弹出下拉列表,或关闭其他列表 开始 添加一个类用来设置节点信息 1 public class NavigationMenuItem 2 { 3 /// <summary> 4 /// The icon 5 /// </summary> 6 private Image icon; 7 /// <summary> 8 /// Gets or sets the icon. 9 //

winform控件制作笔记(一)

北城以北 提交于 2019-11-30 18:27:13
有个很惨的项目,已经一年多了,一直使用默认window的样子,版本和功能有点繁杂,一直被吐槽了很久,所以想利用最近的时间来重做一个漂亮的界面组件。既然要做那就认认真真的安排一下,首先要明确目的,就是这组控件打算做成什么样子,都有哪些功能。计划如下: 一、公共的控件类,并且方便扩展到其它项目 二、控件的外观素材与控件本身分离,并使外观效果更易于更新替换 三、支持一鍵换肤功能,包括在运行时与设计时 四、做一个控件皮肤风格设计器并支持多种部署方案 五、笔者是完美主义者,一定要完美 但很不幸,本人的平面设计能力基本为零,别人都说我的审美观有异于常人,所以要的把这组控件全部做成贴图的形式,这样就可以让别人来改善我审美上的缺陷了。 码了这么多年,这还是第一次做UI方面的设计,总有种前途多舛的感脚。 一、继承关系。 当从IDE中创建一个新的用户控件时,自动生成的代码是继承自UserControl,这里有必要说明一下这些类型的继承关系。 Component的类,只要是继承它的类都会显示在IDE的工具箱内,而它又继承自MarshalByRefObject,这说明控件可以被序列化和跨域访问。 Control继续自Component,它封装了窗口的特性与相关功能,这决定了Control与其子类可以从工具箱放到设计器上显示出用户界面,也就是我们说的UI,从此每一个控件其实就是一个window窗体了

关于WinForm TreeView的分享~

人盡茶涼 提交于 2019-11-30 16:14:39
最近在写个测试demo的时候使用到WinForm TreeView,已经好久没接触了,有些生疏,所以还是记录一下遇到的一些问题。 1、如果动态绑定TreeView,这个功能一般会在数据量不确定,需要去数据库或者其他途径获得数据,动态加载数据的时候使用。 下面我们看一下怎么实现动态版定,首先准备好数据,我这里就模拟一下,定义两个数组 //定义值 string[] strs = { "香蕉", "苹果", "桃子", "草莓" }; string[] strs2 = { "红苹果", "青苹果" };//这个数组表示苹果的子项 2、下面定义两个方法,添加父节点和添加字节点的方法,这个例子比较简单,各位可以根据你们自己的需要修改代码。递归添加子节点的时候我只添加父节点下的子节点,其他节点暂时不添加,所以用到if (num == 2) ,因为苹果是第二项,所以从2开始添加子节点 //添加父节点的方法 private void BindRoot(string[] strs, string[] strs2) { int i = 1; foreach (var item in strs) { TreeNode rootNode = new TreeNode(); rootNode.Tag = i; rootNode.Text = item; tvData.Nodes.Add(rootNode);

(七十七)c#Winform自定义控件-采样控件

僤鯓⒐⒋嵵緔 提交于 2019-11-30 16:06:50
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。 GitHub: https://github.com/kwwwvagaa/NetWinformControl 码云: https://gitee.com/kwwwvagaa/net_winform_custom_control.git 如果觉得写的还行,请点个 star 支持一下吧 欢迎前来交流探讨: 企鹅群568015492 来都来了,点个 【推荐】 再走吧,谢谢 NuGet Install-Package HZH_Controls 目录 https://www.cnblogs.com/bfyx/p/11364884.html 用处及效果 注意观察各个控件交叠的地方,是不是发现他们没有遮挡?这就是这个控件的妙处了。 准备工作 先说明一下这个控件的作用,很多时候我们需要一个图片类型的控件,但是有需要密集的放在一起,如果单纯的设置背景图或image的话 交叠在一起的部分就会存在遮挡现象,所有就有了这个控件。 该控件可以根据设置的采样图片来裁剪有用的绘图区域,这样的好处就是在交叠的时候,无用区域不会遮挡。 这个用GDI+画的,另外也用到了一点三角函数,不明白的话 可以先百度下 开始 添加一个类UCSampling ,继承UserControl 添加属性 1 /// <summary> 2 /// The

Winform-自定义控件

风格不统一 提交于 2019-11-30 16:04:28
复合控件(Composite Controls) :将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。【继承UserControl】 扩展控件(Extended Controls): 就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。【继承对应控件例如:Button】 自定义控件(Custom Controls): 就是直接从System.Windows.Forms.Control类派生,也就是说完全由自己来设计、实现一个全新的控件,这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。【继承Control】 来源: https://www.cnblogs.com/renph/p/11603137.html

第十讲:C# WinForm 检测窗口是否重复出现,如果重复出现则激活原窗体

主宰稳场 提交于 2019-11-30 15:49:21
这一讲主要是如何判断通过菜单或其他方式打开的窗体,是否有重复打开的问题,如果重复打开就直接激活原有窗体就可以了。 思路: 1、设置一个变量用于标示窗体是否被打开过,默认为false,即没有打开 2、打开窗体前先判断这个变量如果为false,则新生成一个窗口,反之将原有窗口激活。 上代码: 下面有两个窗体,WS窗体是软件启动的时候首先显示的窗体,Inform窗体是由托盘的菜单中的“设备信息”激活的窗体,我们在使用托盘菜单激活Inform窗体的时候要做判断,托盘菜单放置在WS窗体代码里面。 1、在WS窗体代码的托盘里面代码如下 2、效果如下: a、启动的时候软件首先显示WS窗体,然后计划通过托盘的菜单打开Inform窗体 b、如果是第一次打开,则显示Inform且没有提示 c、这个时候点击WS,让WS处于激活状态。 d、此时通过菜单试图打开Inform窗体,则软件将inform窗体设置激活状态,并提示“重复”的对话框。 来源: https://my.oschina.net/u/4082616/blog/3112199

C# winform checkboxlist 插件新增和修改实现动态加载多选值

旧时模样 提交于 2019-11-30 13:54:46
最近研究这个插件浪费了几个小时时间:记录下,分享给有需要的人。记得关注我。 系统里面记录多选的拼接字符串储存。 1.新增: //添加checklist到数据中 string checkedText = string.Empty; //循环勾选值,只拼接勾选值。 空值不拼接,非空值以逗号隔开。 for (int i = 0; i < this.ckl_factory.Items.Count; i++) { if (this.ckl_factory.GetItemChecked(i)) checkedText += (String.IsNullOrEmpty(checkedText) ? "" : ",") + this.ckl_factory.GetItemText(this.ckl_factory.Items[i]); } 2.加载,实现修改界面加载多选值 //服务工厂 string[] factory_list = edit_supplier.factory_name.Split(','); //加载checklist数据,加载已选择的数据为checked状态 string checkedText = string.Empty; for (int i = 0; i < factory_list.Length; i++) { for (int j = 0; j < this.ckl