Winform
Nemo_XP
这个作者很懒,什么都没留下…
展开
-
线程间操作无效: 从不是创建控件的线程访问它。
private void button1_Click(object sender, EventArgs e) { //报错:从不是创建控件的线程访问它 Thread t = new Thread(() => { for (int i = 0; i < 100; i++) { this.label1.Text原创 2022-03-21 16:24:17 · 6268 阅读 · 0 评论 -
应用程序VS崩溃原因
因原创 2021-01-13 15:13:28 · 975 阅读 · 0 评论 -
开发中遇到“LoaderLock”的解决方法
在异常设置中,在“Managed Debugging Assistants”栏下,将LoaderLock 前的勾去掉。重新运行即可。原创 2020-09-07 16:53:31 · 345 阅读 · 0 评论 -
winform嵌入chrome浏览器,并使用F12控制台来Debug调试
1.nuget安装cefsharp2.实例化浏览器private void Form1_Load(object sender, EventArgs e){ChromiumWebBrowser b = new ChromiumWebBrowser("http://localhost:57531/views/Map/scene.html");this.Controls.Add(b);b.D...原创 2019-11-18 18:25:38 · 2438 阅读 · 0 评论 -
进度条使用【一】:使用Timer控件
使用timer控件: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.原创 2018-04-11 09:15:58 · 798 阅读 · 0 评论 -
Listbox之间互相拖拽功能
新建一个Winform。拖两个Listbox,都改allowDrag为true。复制以下代码,覆盖。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using Sy...原创 2018-04-11 09:16:26 · 2442 阅读 · 1 评论 -
DataGridView等数据控件刷新后,选中刷新前的选中值
思路:1.记住之前的行号 优点:效率高 缺点:如果增删操作后调用的刷新代码,选中的会是相邻的(不过有特殊业务需求,如删除之后选相邻,增加之后选新增),根据需求和操作相应更改行号,应该还是能完美解决的。2.记ID 优点:准确,不需要关心是什么操作。 缺点:需要遍历,效率会降低3.记行号和ID 结合1和2的解决方案,先判断刷新后,处于当前行号的ID是否一致,一致就选中,否则就去遍历。 优缺点:中规中矩原创 2018-04-11 09:16:32 · 3052 阅读 · 0 评论 -
WinForm关于更新程序的设计思路
开发WINDOWS应用程序一般都会有一个自动更新的功能,这就需要提供一个单独的更新程序来更新主程序,那么主程序怎么检测是否有更新,以及更新程序怎么去更新主程序呢?下面将分开研究分析。 用VS发布向导发布的都是安装程序,每次更细都是将整个安装程序下载下来重新安装,有时候安装程序过大而更新又比较平凡(比如我们ERP系统中经常有模块需要升级),为了升级一个单独的模块而升级整个应...原创 2018-04-15 07:42:16 · 753 阅读 · 1 评论 -
tabcontrol选项卡隐藏或者禁用
方法1.使用tab.parent=null,来去隐藏,使用tab.parent=tabControl1来显示。此方法完全可以胜任需求。但是也会存在一个bug,就是tabcontrol父控件中的tab至少要存在一个,即如果tabcontrol.TabPages.count==0时,tabcontrol为null可能会报错。所以有这种问题的解决办法如下代码://先添加一个临时的TabPage Ta...原创 2018-04-11 11:34:02 · 8390 阅读 · 0 评论 -
treeview实现ctrl和shifit多选节点,非checkbox。控件代码
把下面代码新建一个类,支持ctrl和shift添加.参见http://www.cnblogs.com/zhangronghua/archive/2011/11/23/CustomTreeViewToSupportDragAndMultiSelect.htmlusing System;using System.Collections;using System.ComponentModel;using...原创 2018-04-11 11:32:49 · 2764 阅读 · 0 评论 -
Combobox多选:与ListCheckbox组合【一】
原理及适用范围:原理:使用了Listcheckbox和combobox组成的控件,使用方便,仅仅一个控件类。但是使用下来发现一些不合适的地方,例如,放在层出展开的Listcheckbox会被层挡住,多选的时候只能使用DrapDown而不能使用DrapDownList。绑定的时候也只能绑定键值对集合。所以建议使用Combobox多选:与ListCheckbox组合【二】中的控件类使用:...原创 2018-04-11 11:31:14 · 5270 阅读 · 3 评论 -
Combobox多选:与ListCheckbox组合【二】
因为1的缺陷,所以我又从网上找到一个解决方案代码。下载代码和参考的地址:http://www.codeproject.com/Articles/21085/CheckBox-ComboBox-Extending-the-ComboBox-Class-and个人的使用方法是,得到里面的CheckBoxComboBox.dll引用,然后类中using PresentationControls;最后拷一...原创 2018-04-11 11:30:43 · 2150 阅读 · 0 评论 -
ListView和ListBox内部拖拽排序原理
其实就是很简单的删除选定的元素,然后在合适的位置添加元素。下面以listBox为例的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using ...原创 2018-04-11 11:28:34 · 1028 阅读 · 0 评论 -
DropdownList绑定的两种方法
DropdownList绑定的两种方法1.绑定整个dataTable,然后绑定显示值和数据值。SqlConnection conn = UtilitySqlClass.OperateDataBase.ReturnConn();string strSQL = "select * from CompanyType";SqlDataAdapter ada = new SqlDataAdapter(str...原创 2018-04-11 11:06:18 · 268 阅读 · 0 评论 -
WinForm判断数字文本框输入数字
方法一:利用ASCII码处理办法、{if ((e.KeyChar <= 48 || e.KeyChar >=57) && (e.KeyChar != 8) && (e.KeyChar != 46)) e.Handled = true; // 48代表0,57代表9,8代表空格,46代表小数点}方法二:private void TextBox_KeyPress(object sender, K...原创 2018-04-15 07:42:22 · 3317 阅读 · 0 评论 -
进度条使用【二】:使用进程
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;n原创 2018-04-11 09:15:56 · 462 阅读 · 0 评论 -
Winform的combobox功能开发
转自:https://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html包含自动完成下拉框,字体下拉框,电脑盘符,多列下拉框,带CheckBox,树型下拉框等.代码主要来自CodeProject,版权属于原作者.1.带自动完成功能的下拉框(.net 1.1使用,.net 2.0微软自带的ComboBox已有该功能) Au...转载 2018-04-11 09:15:53 · 1167 阅读 · 0 评论 -
C#中实现文件拖放打开的方法
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Link; else e.Effect = DragDropEffects.No...原创 2018-04-15 07:41:19 · 1456 阅读 · 0 评论 -
C# DataGridView添加右键菜单等技巧
1).右键点击行时选中行,并弹出操作菜单1). 添加一个快捷菜单contextMenuStrip1;2). 给dataGridView1的CellMouseDown事件添加处理程序:程序代码private void DataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e){if (e.Butt...原创 2018-04-15 07:41:27 · 6400 阅读 · 0 评论 -
vs2010发布、打包安装程序(超全超详细)
在vs2010 选择"新建项目"à" 其他项目类型"à" Visual Studio Installerà"安装项目": 命名为:Setup1 。这是在VS2010中将有三个文件夹,1."应用程序文件夹"表示要安装的应用程序需要添加的文件;2."用户的'程序'菜单"表示:应用程序安装完,用户的"开始菜单"中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.e原创 2018-04-15 07:41:34 · 8424 阅读 · 1 评论 -
WinForm下Treeview父节点子节点联动
工作上,当我们碰到Treeview,便要处理父子节点联动这一需求。以下是我写的一些代码。直接复用即可。当然大家若发现有不妥的地方,希望踊跃拍砖,共同进步。。。 private void treeView_XM_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode treeNode = e.Node原创 2018-04-11 09:11:46 · 1182 阅读 · 2 评论 -
解决“在证书存储区中找不到清单签名证书”
这个问题似乎以前碰到过,不过记不太清了。程序重新生成,提示错误:在证书存储区中找不到清单签名证书。可能是之前部署的程序证书被我删掉了或是证书过期了,结果出现这个问题。解决方案如下:方案1:右击项目属性—>签名—>为ClickOnce清单签名,将勾掉的选项去掉。方案2:在签名中创建一个新的签名。方案3:记事本打开相应的csproj文件,调整节点值。true将true修改为false。以上解决方案任选原创 2018-04-11 09:12:22 · 526 阅读 · 0 评论 -
DataGridView 与货币管理器的位置关联的行不能设置为不可见
在DataGridView中,选择行无法隐藏的问题! 当直接用程序中的 DataGridView.SelectRows[0].Visible = false; 程序会报出一个异常!异常错误如下:System.InvalidOperationException: 与货币管理器的位置关联的行不能设置为不可见。 在这里可以看出明显是数据绑定问题,就是货币管理器的问题:这下问题好解决了;Curr原创 2018-04-11 09:13:00 · 2391 阅读 · 0 评论 -
TreeView中父子级数据添加好方法
这是一个简单的treeview数据添加实例。 如何加载父子节点呢:传统做法:先查询数据库分类等于一级菜单的数据然后循环,先加到根节点,然后查询父ID=一级菜单ID的数据,新建二级节点,添加到当前的一级节点节点下。······循环子级(使用递归)······TreeNode rootTreeNode = treeView1.Nodes.Add("Root", "工艺管理系统"); ...原创 2018-04-11 09:13:23 · 1436 阅读 · 0 评论 -
创建单例程序的代码。启动管理员权限。
[STAThread] static void Main() { bool isRunone; Mutex run = new Mutex(true, "QualityManagement", out isRunone);//创建一个互斥体,返回false表示已存在 if (isRunone)原创 2018-04-11 09:13:26 · 419 阅读 · 0 评论 -
treeview中刷新之后选中节点不变
实现方法:1.获取刷新前的tag啊,或者text啊 ,key啊,都行,然后刷新后递归循环每一个节点,发现匹配,果断break。最后直接复制给treeview1.selectedNode.2.利用treeview1.selectedNode.fullPath.代码如下: //刷新控件treeview private void UpdateTreeView()原创 2018-04-11 09:14:06 · 2028 阅读 · 0 评论 -
如何给datagridview添加一个ckbox列头实现全选功能
添加想一个类代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Windows.Forms;namespace TechnicsManager{ public delegate void CheckBox原创 2018-04-11 09:14:14 · 659 阅读 · 0 评论 -
C#如何以管理员身份运行程序
在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误。 比如在通过winform程序执行cmd命令时,某些情况下如果不是以管理员身份运行,则会提示命令无效。 或者通过winform程序执行Windows Service 服务时,也需要以管理员身份才能调用Service服务。下面讲解一下如何使程原创 2018-04-11 09:14:17 · 244 阅读 · 0 评论 -
winform下改造combobox为listbox键值对下拉形式
WinForm下的ComboBox默认是以多行文本来设定显示列表的, 这通常不符合大家日常的应用,因为大家日常应用通常是键/值对的形式去绑定它的.那么用键值对的形式如何做?因为Combox的每一个项的值是一个object, 实际上就是一个键/值对.我用的是下面这个类的实例作为它的一个项:using System;using System.Collections.Generic;using Syst原创 2018-04-11 09:14:33 · 1016 阅读 · 0 评论 -
让treeview控件在失去焦点时仍能高亮显示当前选中的节点
方法: 在属性页上吧HideSelection勾掉。但是淡灰色,颜色不醒目。 借助以下资料Treeview控件--Name:tVtypeList将tVtypeList的HideSelection属性设置为False,DrawMode属性设置为OwnerDrawText将tVtypeList的DrawNode事件写为:private void tVtypeList_DrawNode(object s原创 2018-04-11 09:14:41 · 3672 阅读 · 0 评论 -
treeview的treenode显示tip
可以在动态添加treenode或者设计器添加treenode 的时候,设置tooltipText,然后在treeview属性设置中把showNodeTops设置为true;原创 2018-04-11 09:14:46 · 1085 阅读 · 0 评论 -
PropertyGrid显示多行文本
使用PropertyGrid控件,如果直接自定义一个show对象SomeProperties,然后propertyGrid1.SelectedObject = new SomeProperties();所有的属性都会以一行文本显示,如果有个属性可能出现文字较多的情况,那么一行文本显然是不够的,如下图,假设张三这里是上海市杨浦区国权路151号5号楼502室.....,就需要和VS里...原创 2018-04-15 07:41:14 · 1647 阅读 · 0 评论