winform

C#之winform实现文件拖拽功能【转】

孤街醉人 提交于 2020-01-23 22:42:42
将一个文件拖拽到窗体的某个控件时,将该控件的路径显示在该控件上,只要拿到了路径自然可以读取文件中的内容了 将一个控件的属性AllowDrop设置为true,然后添加DragDrop、DragEnter时间处理函数,如下: private void txtAppPath_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { e.Effect = DragDropEffects.Link; } else { e.Effect = DragDropEffects.None; } } private void txtAppPath_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { txtLocalFileName.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); } private void button1_Click(object sender, EventArgs e) { // System.Diagnostics

winform WebBrowser如何修改使用默认的IE浏览器版本

纵饮孤独 提交于 2020-01-23 04:18:18
在搜了一些相关资料原来WebBrowser使用的是IE的兼容模式进行浏览(IE7模式)。 建议:先添加注册表中,然后使用注册表编辑器导出功能,产生reg注册文件;方便日后使用。 Winform WebBrowser引用IE版本问题 http://www.cnblogs.com/midcn/archive/2012/08/22/2650975.html 再谈IE的浏览器模式和文档模式 http://www.cnblogs.com/liuzhendong/archive/2012/04/27/2474363.html WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下? http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html 指定Webbrowser控件所用IE内核版本 http://www.cnblogs.com/520yun/p/3797651.html?utm_source=tuicool 关于注册表的使用 http://www.cnblogs.com/safezone/articles/1307470.html 要删除一个项,在名字前面加减号,比如: [-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serv-U

c#winform使用WebBrowser 大全

独自空忆成欢 提交于 2020-01-23 04:04:58
C# WinForm WebBrowser ( 一 ) MSDN 资料 1 、 主要用途 :使用户可以在窗体中导航网页。 2 、 注意 : WebBrowser 控件会占用大量资源。使用完该控件后一定要调用 Dispose 方法,以便确保及时释放所有资源。必须在附加事件的同一线程上调用 Dispose 方法,该线程应始终是消息或用户界面 (UI) 线程。 3 、 WebBrowser 使用下面的成员可以将控件导航到特定 URL 、在导航历史记录列表中向后和向前移动,还可以加载当前用户的主页和搜索页: 1. URL 属性 :可读、可写,用于获取或设置当前文档的 URL 。  WebBrowser 控件维护浏览会话期间访问的所有网页的历史记录列表。设置 Url 属性时, WebBrowser 控件导航到指定的 URL 并将该 URL 添加到历史记录列表的末尾。 WebBrowser 控件在本地硬盘的缓存中存储最近访问过的站点的网页。每个页面都可以指定一个到期日期,指示页面在缓存中保留的时间。当控件定位到某页时,如果该页具有缓存的版本,则直接显示缓存中的内容而不必重新下载该页,从而节省了时间。使用 Refresh 方法强制 WebBrowser 控件通过下载来重新加载当前页,从而确保控件显示最新版本。 注意 :即使已请求了另一个文档,该属性也包含当前文档的 URL 。如果设置该属性的值

C# winform 自定义皮肤制作

时光总嘲笑我的痴心妄想 提交于 2020-01-21 11:47:02
最近要做个软件正在做技术准备,由于WINFORM生成的窗体很丑陋,一个好的软件除了功能性很重要外,UI的体验也是不容忽视的。习惯性的在网上搜素了下,换肤控件也有好几款,但是有些用起来不是很好用,好点的也要花很多银子哦,而且毕竟是别人写的,心里总不是个滋味,所以决定自己尝试着写写看,花了一个晚上终于做出来了个DEMO,貌似还不错,贴图如下(图片是直接是用的暴风影音的,寒自己一个。。) 下面和大家分享下。 首先分析下皮肤的制作原理,我的理解是把整个窗体(去边框后)划分为9个区域(如果有更复杂的界面,可以划分更多),有图有真相: 然后准备皮肤素材,切图,我的切图如下: 接着可以开工了: 1.初始化图片资源变量 protected int formMinX = 0;//最小化按钮的X坐标 protected int formMaxX = 0;//最大化按钮的X坐标 protected int formCloseX = 0;//关闭按钮的X坐标 protected int formTitleMarginLeft = 0;//标题栏的左边界 protected int formTitleMarginRight = 0;//标题栏的右边界 Image imgTopLeft = (Image)Resources.topleft;//窗体顶部左上角图片 Image imgTopRight =

C#(WinForm)实现一个使用Windows自带的方法库生成GUID工具

泪湿孤枕 提交于 2020-01-19 20:15:16
一、实现的WinForm窗体应用程序工具 1.1、实现功能: ①实现生成5种标识符(N、D、B、P、X)对应的GUID; ②实现生成16位、22位唯一数字的字符串; ③将生成的GUID内容保存到本地文本文件中; ④能够生成单个和批量生成对应的GUID; ⑤关闭程序会在右下角的托盘显示图标,点击该图标右键退出在真正关闭程序; ⑥实现该程序只能运行一个实例。 1.2、工具效果图如下: 二、该工具的GUID实现基础参考 C#中Guid.ToString (String)五种格式,以及将32位的GUID转为16位及其他格式 三、实现点击右上角后在系统右下角程序托盘图标效果 ①打开左侧的"工具箱",在项目中添加NotifyIcon控件 ②打开左侧的"工具箱",在项目中添加ContextMenuStrip控件 ③具体的实现脚本如下:(注意:notifyIcon1是NotifyIcon的名称,myMenu是ContextMenuStrip的名称) //双击托盘图片重新显示 private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Normal; } //关闭窗体是最小化到系统托盘

C#Winform带导航菜单的主界面

旧街凉风 提交于 2020-01-19 13:58:58
C#Winform带导航菜单的主界面 单击窗体上面的模块按钮,将会在按钮的下面显示一个下拉列表。如下图: 实现步骤: 1.新建一个winform程序,添加一个panel,三个button,一个listview,一个imagelist控件,布局如上图: 2.代码如下: private void Form1_Load(object sender, EventArgs e) { listView1.Clear(); //清空listView1中的原有内容 listView1.LargeImageList = imageList1; //设置当前项以大图标的形式显示时用到的图像 listView1.Items.Add("设置上下班时间", "设置上下班时间", 0); //向listView1中添加项“设置上下班时间” listView1.Items.Add("是否启用短信提醒", "是否启用短信提醒", 1); //向listView1中添加项“是否启用短信提醒” listView1.Items.Add("设置密码", "设置密码", 2); //向listView1中添加项“设置密码” } private void button1_Click ( object sender , EventArgs e ) { listView1 . Dock = DockStyle . None ;

Winform将select数据写入datagridview

时光总嘲笑我的痴心妄想 提交于 2020-01-17 17:09:02
使用组件: dateTimePicker1、button10、dataGridView3 代码: private void button10_Click(object sender, EventArgs e) { this.dataGridView3.Refresh(); this.dataGridView3.Update(); this.dataGridView3.EndEdit(); string datestr = dateTimePicker1.Value.ToString("yyyy-MM-dd"); string str = ConfigurationManager.ConnectionStrings["OK"].ConnectionString; SqlConnection conn = new SqlConnection(str); conn.Open(); SqlCommand cmd = new SqlCommand("SELECT Row_Number() over (order by regdate asc) as RowId,SubContractCode,status,HTmsg,a.RegHumName,zrbm_code,a.regdate FROM CM_SubContract a where a.RegDate>='" + datestr + "

C#winform的datagridview去除列标头自带的排序,去除初始选中状态,添加自定义checkbox

雨燕双飞 提交于 2020-01-17 13:48:08
//去除datagridview列表头排序 foreach (DataGridViewColumn item in dataList.Columns) item.SortMode = DataGridViewColumnSortMode.NotSortable; //去掉datagridview初始选中行 dataList.ClearSelection();//dataList,datagridview的Name //遍历datagridview中的行,dataList-datagridview的Name List<UCCheckBox> ckBox = new List<UCCheckBox>();//checkbox列表 for (int i = -1; i < dataList.Rows.Count; i++) { UCCheckBox ckBoxNew = new UCCheckBox();//自定义控件checkbox,可以换成你自己的控件 ckBoxNew.TextValue = ""; ckBoxNew.Checked = false; //给checkBox确定所在行位置 Rectangle rect = this.dataList.GetCellDisplayRectangle(-1, i, true);//-1行标题所在列 //ckBox.Size = new

WINFORM自定义皮肤制作(上)

六眼飞鱼酱① 提交于 2020-01-17 05:27:55
最近要做个软件正在做技术准备,由于WINFORM生成的窗体很丑陋,一个好的软件除了功能性很重要外,UI的体验也是不容忽视的。习惯性的在网上搜素了下,换肤控件也有好几款,但是有些用起来不是很好用,好点的也要花很多银子哦,而且毕竟是别人写的,心里总不是个滋味,所以决定自己尝试着写写看,花了一个晚上终于做出来了个DEMO,貌似还不错,贴图如下(图片是直接是用的暴风影音的,寒自己一个。。) 下面和大家分享下。 首先分析下皮肤的制作原理,我的理解是把整个窗体(去边框后)划分为9个区域(如果有更复杂的界面,可以划分更多),有图有真相: 然后准备皮肤素材,切图,我的切图如下: 接着可以开工了: 1.初始化图片资源变量 protected int formMinX = 0;//最小化按钮的X坐标 protected int formMaxX = 0;//最大化按钮的X坐标 protected int formCloseX = 0;//关闭按钮的X坐标 protected int formTitleMarginLeft = 0;//标题栏的左边界 protected int formTitleMarginRight = 0;//标题栏的右边界 Image imgTopLeft = (Image)Resources.topleft;//窗体顶部左上角图片 Image imgTopRight =

C#上位机之—WinForm实现Socket异步通讯示例

末鹿安然 提交于 2020-01-16 18:58:41
工作中常用到的一些知识点,总是用完就忘,第一次尝试用博客记录下来,以备后用; Socket通讯,Socket(套接字)是基于TCP/IP通讯方式的封装好的类,调用时需要添加下面的服务引用: .......10 using System.Net; 11 using System.Net.Sockets; 窗体页面搭建,上面为服务器区,下面为客户端区: 建立两个类,一个表示服务器,一个表示客户端, 首先建立服务器类: 1.声明变量:IP地址,端口号,EndPoint,Socket类,数据Buffer等 1 string ip;//IP地址 2 string port;//端口号 3 IPEndPoint endPoint;//网络端点 4 Socket socServer;//侦听连接套接字 5 Socket socClient;//通讯套接字 6 byte[] dataReceived = new byte[50000]; 7 8 public delegate void delegateDisplayMsg(string type,string msg); 9 public delegateDisplayMsg OnDisplay; 10 11 public SocketServer() 12 { 13 socServer = new Socket(AddressFamily