winform

C#中DataGridView控件的使用

北慕城南 提交于 2020-03-25 13:25:40
3 月,跳不动了?>>> DataGridView 控件 DataGridView是用于Windows Froms 2.0的新网格控件。它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性。 关于本文档: 本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。 本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。 大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。注意,某些问题会由于知识点的关联性重复出现在多个章节。这些问题、答案及其附带的示例代码都包含在本文档的附录部分。 内容 1 何为DataGridView.. 4 1.1 DataGridView和DataGrid 之间的区别... 4 1.2 DataGridView的亮点... 5 2 DataGridView的结构... 6 2.1 结构元素... 6 2.2 单元格和组... 6 2.3 DataGridView的单元格... 6 2.3.1 DataGridViewCell的工作机制... 7 2.4 DataGridView的列... 9 2.5 DataGridView的编辑控件... 9 2.6

WinForm设置窗体默认控件焦点

爷,独闯天下 提交于 2020-03-25 09:15:39
winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法: ①设置tabindex 把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了。 ② Winform 的Activated事件 在Form的Activated事件中添加textBox1.Focus(), 即可获得焦点。 private void Form1_Activated(object sender, EventArgs e) { textBox1.Focus(); } TextBox是可以获得焦点的. 有几个前提: 1. TextBox所属的窗体(Form)在可操作(Active)状态. 即用户选中了Form. 2. TextBox的Enable属性,Visiable属性为True. 刚开始时原以为在Form的Load事件中添加textBox1.Focus(),测试失败 private void Form1_Load(object sender, EventArgs e) { textBox1.Focus(); } 因为在窗体加载时调用Focus()函数时, TextBox还未能成功的被显示到界面上。所以导致了失败。 笔者测试:笔者之前一直都是在load事件里面指定控件焦点,一直效果不理想,没想到是因为load事件时控件没有被创建,所以无法设置输入焦点。 来源: https

WinForm中的几个小技巧

╄→尐↘猪︶ㄣ 提交于 2020-03-24 06:19:37
屏蔽窗体右上角关闭按钮 一、重写OnClosing protected override void OnClosing(CancelEventArgs e) { if ( this .Visible) { e.Cancel= true ; // // WHATE TODO // } } 二、重写WndProc protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { // User clicked close button this.WindowState = FormWindowState.Minimized; return; } base.WndProc(ref m); } 更多方法详见: http://topic.csdn.net/u/20091220/21/5228d0d6-26aa-48b8-81aa-293f7c7339f8.html?94449 http://topic.csdn.net/u/20090419/18/970d8ad9-ed9a-4bd9-a623-81d23106545b

WinForm中的几个小技巧

僤鯓⒐⒋嵵緔 提交于 2020-03-24 06:19:10
屏蔽窗体右上角关闭按钮 一、重写OnClosing protected override void OnClosing(CancelEventArgs e) { if ( this .Visible) { e.Cancel = true ;    //    // WHATE TODO    // } } 二、重写WndProc protected override void WndProc(ref Message m) { const int WM_SYSCOMMAND = 0x0112; const int SC_CLOSE = 0xF060; if (m.Msg == WM_SYSCOMMAND && (int) m.WParam == SC_CLOSE) { // User clicked close button this.WindowState = FormWindowState.Minimized; return; } base.WndProc(ref m); } 更多方法详见: http://topic.csdn.net/u/20091220/21/5228d0d6-26aa-48b8-81aa-293f7c7339f8.html?94449 http://topic.csdn.net/u/20090419/18/970d8ad9-ed9a-4bd9-a623

Winform 开机自动启动

拥有回忆 提交于 2020-03-22 14:44:10
private void AutoMenu_Click( object sender, EventArgs e) { string strName = Application.ExecutablePath; string strnewName = strName.Substring(strName.LastIndexOf( " \\ " ) + 1 ); if (AutoMenu.Checked) { // 修改注册表,使程序开机时不自动执行。 this .AutoMenu.Checked = false ; Microsoft.Win32.RegistryKey Rkey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey( " SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run " ); Rkey.DeleteValue(strnewName, false ); MessageBox.Show( " 程序设置完成! " , " 提示 " , MessageBoxButtons.OK, MessageBoxIcon.Information); } else { this .AutoMenu.Checked = true ; if ( ! File.Exists(strName))

C# Excel嵌入到Winform

安稳与你 提交于 2020-03-22 05:53:28
本文讲的这个技术是把Excel表格嵌入到自己开发程序的Form窗体中进行操作,给客户一个不用切换窗口的操作界面,似乎更好。这在VC中用OLE技术很容易实现,但是在C#中方法就不一样啦。下面将就此进行阐述。 一、首先简要回顾一下如何操作Excel表 先要添加对Excel的引用。选择项目-〉添加引用-〉COM-〉添加Microsoft Excel 9.0。(不同的office讲会有不同版本的dll文件)。 using Excel; using System.Reflection; //产生一个Excel.Application的新进程 Excel.Application app = new Excel.Application(); if (app == null) { statusBar1.Text = "ERROR: EXCEL couldn''t be started!"; return ; } app.Visible = true; //如果只想用程序控制该excel而不想让用户操作时候,可以设置为false app.UserControl = true; Workbooks workbooks =app.Workbooks; _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); /

winform datagridview 通过右键菜单来删除数据行

我是研究僧i 提交于 2020-03-21 04:46:53
1.实现当鼠标移到数据行时,右键删除数据。 步骤1.先定义变量CurrentRowIndex来存储鼠标经过的行数。 如下: View Code 1 public partial class FormTest : Form 2 { 3 private bool isLoad { get ; set ; } 4 /// <summary> 5 /// 当前行号 6 /// </summary> 7 private int CurrentRowIndex { get ; set ; } 2.为该变量赋值。使用CellMouseEnter 代码如下: View Code 1 private void dataGridView1_CellMouseEnter( object sender, DataGridViewCellEventArgs e) 2 { 3 var dgv = (DataGridView)sender; 4 CurrentRowIndex = e.RowIndex; 5 CurrentColumnIndex = e.ColumnIndex; 6 7 } 3.右键鼠标,然后点击删除, 代码如下: View Code 1 private void removeToolStripMenuItem_Click( object sender, EventArgs e) 2 { 3 /

关于获取c# 的winform中DataGird控件选中行的值

久未见 提交于 2020-03-19 12:40:25
注,使用时需要先判断this.dataGridView1.SelectedCells.count,不为0 在进行上面的操作。 获取总行数:dataGridView1.Rows.Count; 获取当前选中行索引:int i = this.dataGridView1.CurrentRow.Index; 获取当前选中列索引:int j = this.dataGridView1.CurrentCell.ColumnIndex; 方法一: this.dgvStuList.SelectedRows[0].Cells["列"].Value.ToString() 方法二: dgvStuList.Rows[dgvStuList.CurrentRow.Index].Cells["列名"].Value.ToString() ///////////////////////////////////////////////// 点击已有数据行时只允许修改和删除,不可以添加,点击空白行时只运行添加,不允许删除和修改,那问题是如何来判断用户点击的是空白行呢,按钮是否可用的判断代码放在哪里呢? 解决方法:给datagrid添加mouse_enter事件 private void userInfo_MouseEnter(object sender,System.EventArgs e) { int row =

Winform引用mshtml程序集的问题

房东的猫 提交于 2020-03-19 12:38:12
最近做了一个联通号码查询的程序,由于是自动查询,需要屏蔽网页页面的js弹出提示框,以避免程序挂起,所以引用了microsoft mshtml.dll程序集,程序发布后,发现只能在装有VS运行环境的机器上安装,而没有这个环境的机器就会出现缺少microsoft mshtml程序集的错误提示,不能安装,在网上找了些资料,又经人指点终于解决,现把过程记下来与大家分享一下: 因为 Microsoft.mshtmal.dll 这个 dll 是从 system32 文件夹下的 mshtml.tlb(COM 类型库文件)中导出的,因此我们只需要用 VS2008 自带的 TlbImp.exe COM 类型库导出工具将这个 tlb 文件再导一遍就可以了。我使用下面的脚本进行导出: tlbimp mshtml.tlb /out:mshtml.dll 最后得到一个 mshtml.dll 程序集文件,将我们项目中引用的 Microsoft.mshtmal.dll 替换为 mshtml.dll,再打包时这个 dll 就可以被添加到安装项目中了。 具体方法:“开始”|"程序"|“VS 2008”|"VS tools"|"VS命令提示"输入:tlbimp mshtml.tlb /out:C:\WINDOWS\system32\mshtml.dll 等待运行完成后在安装VS的盘区(我的安在了D)找到:D:

C#WinForm利用SmtpClient发送Email

瘦欲@ 提交于 2020-03-19 01:29:06
C#最初采用的是System.Web.Mail命名空间下的类发送邮件,后来经过改进,采用System.Net.Mail命名空间下的类发送邮件.当然前者仍然可用,只是后者功能更强大. 用System.Net.Mail发送邮件的原理如下: 核心就是调用SmtpClient类的send(newMessage)方法,其中的参数newMessage是一个MailMessage对象,所以我们在调用send(newMessage)方法前,须实例化MailMessage类,然后对newMessage的属性设值。 引用 llsen http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Fllsen : using System.Net.Mail; using System.Net.Mime; using System.Net; public static void CreateMessageWithAttachment( string server) { // Specify the file to be attached and sent. // This example assumes that a file named Data.xls exists in the // current working directory. string