还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第课技术下知识点24Ado.Net DataGridView
一、DataGridView单元格验证例如只容许输入数字规定验证错误后焦点不离开有两种措施DataGridView.EditingControlShowing事件和DataGridView.CellValidating事件1DataGridView.EditingControlShowing事件显示用于编辑单元格的控件时发生,命名空间System.Windows.Forms程序集:System.Windows.Forms在system.windows,forms,dll中如void dgvCsEditingControlShowingobject sender,DataGridViewEditingControlShowingEventArgs ee.CellStyle.BackColor=Color.Aquamarine;〃设置编译时的颜色control=new TextBox;control=TextBoxe.Control;control.KeyPress+二new KeyPressEventllandlertxt_KeyPress;//然后在txt_KeyPress这里进行验证2DataGridView.CellValidating事件在单元格失去输入焦点时发生,并启用内容验证功能命名空I、司:System.Windows.Form,程序集:System.Windows.Forms在System.Windows.Forms,dll中备注验证不通过时调用e.Cancel=true,终止事件链,单元格将保持编辑状态调用dgv_details.CancelEdit;可以使单元格的内容会滚到修改前的值使用System.Windows.Forms.SendKeys.Send〃-a〃;将全选单元格的内容如void dgv_Ce11Validatingobject sender,DataGridVicwCcllValidatingEvcntArgs e35System.Windows.Forms.Application.DoEvents;3637;//歹宽自适应worksheet.Columns.EntireColumn.AutoFitU//if38”Microsoft.Office.Interop.cmbxType.Text!=Notification//{39//Excel.Range rg=worksheet.get_Rangeworksheet.C2],40worksheet.Cells[ds.Tables
[0].Rows.Count+1,2];ells[2,//rg.NumberFormat=00000000;41//4243if save!=444546try47workbook.Saved=true;workbook.SaveCopyAssave;//=true;48catch Exceptionex//=false;导出文献时出错,文献也许正被打开!49MessageBox.Show50\.Message;5152535455//elsen”+ex//{56//=false;57//58xlApp.Quit;59”/强行销毁GC.Collect60//ifSystem.IO.save System.Diagnostics.Proces save;61//打开EXCEL62导出成功”,“提酉星”,63MessageBox.Show MessageBoxButtons.06465・s Start66复制代码K;67以上两种措施都能实现Excel的导出,根据验证第一种措施的导出效率要比第二种要高诸多,至于选择哪种导出方式以及性能的详细对比还需要读者详细的去衡量二.显示密码DataGridView.CellFormatting事件在单元格的内容需要设置格式以便于显示时发生命名空间:System.Windows.Forms程序集:System,Windows.Forms在system,windows,forms,dll中代码IIIsummaryIII单元格显示格式事件///〈/〉summary///param name=sender/paramIllHparam name=e/param private void dataGridViewl_Ce11Formattingobject sender,DataGridViewCe11FormattingEventArgs e//把第列显示★号,夫号的个数和实际数据的长度相似4if e.Columnindex==3if e.Value!=nulle.Value.ToString.Length0e.Value=new string**f,e.Value.ToString.Length;复制代码DataGridView.EditingControlShowing事件在显示用于编辑单元格的控件时发生命名空间:System.Windows.Forms程序集:System.Windows.Forms在system,windows,forms,dll中III1summary2III编辑单元格控件事件35III/summary67III III〈param name=nsendernx/param paramname=nenx/param89private voiddataGridViewl_EditingControlShowingobject sender,1011DataGridViewEditingControlShowingEventArgs e1213//编辑第列时,把第列显示为*号14441516TextBox t=e.Control asTextBox;if t!=null1718if this.dataGridViewl.CurrentCell.Columnindex==3t.PasswordChar=***;1920else2122t.PasswordChar=new char;232425复制代码2627282930313233343536三.WinForm最简朴两GridView同步滚DataGridView.Scroll网格水平滚动或垂直滚动引起的事件怎样让两个DataGridView保持同步滚动?一种最简朴措施不过大数据量时界面会闪四.DataGridView添加任何控田代码Evoid dataGridView2_EditingControlShowingobject sender,DataGridViewEditingControlShowingEventArgs eif e.Control isDataGridViewTextBoxEditingControlTextBox textbox=TextBoxe.Control;//找至目前的父控//Panel p=Panel textbox.Parent;II件,其实就是一种你将此].中的控件清空,然后你就可以在中加入任何控件并随意布局㊀㊀Pan1,Pan Panel了Panel p=Panele.Control.Parent;・p Controls.Clear;btn.Width=38;btn.Text=textbox.Text;btn.Click+=new EventHandlerbtn_Click;p.Controls.Addbtn;复制代码运用容器panel添加控件DataGridView的使用方法诸多,后续会继续简介如有局限性欢迎大家指出decimal tmp=
0.0m;if Idecimal.TryParsee.FormattedValue.ToStringO,outtmp〃与否是数字ife.FormattedValue!=null e.FormattedValue.ToString.Length!=0DevComponents.DotNetBar.MessageBoxEx.Show〃请输入有效数字!〃,〃提醒〃;e.Cancel=true;这两种措施都能验证第一种措施当按键按下时即当编译时就去验证,而第二种措施是当焦点离开单元格编译区域时触发因此个人感觉第一种措施更优一点
二、指定选中单元格并开始编辑状态实现〃获得焦点DataGridView.Focus;〃指定目前单元格DataGridView.CurrentCell=dgv_details[0,0];口中对应参数为列索引或列标题、行索引注意示是默认的先行索引〃开始编辑状态d DataGridView.BeginEdit false;false是指对指定行进行编辑DataGridView.BeginEdit措施尝试将网格置于容许编辑的状态命名空间System.Windows.Forms程序集:System.Windows.Forms在System.Windows.Forms,dll中
三、在拖动列的滚动条时可以将指定的列冻结this.dataGridViewl.ColumnsL,,AddToCartButton/,].Frozen=true;阐明中括号口中指对应列的索引或者对应列的标题这个懂得了后一看就应当明白,无需多加解释
四、DataGridView选择的部分拷贝至剪贴板拷贝模式设定DataGridViewl.ClipboardCopyMode=DataGridViewCl ipboardCopyMode.EnableWithoutHeaderText〃设置可复制的模式其中DataGridView.ClipboardCopyMode属性获取或设置一种值,该值指示顾客与否可以将单元格的文本值复制到Clipboard,以及与否包括行标题和列标题文本命名空间System.Windows.Forms程序集System.Windows.Forms在System.Windows.Forms.dll中选中部分拷贝Clipboard.SetDataObject DataGridViewl.GetClipboardContent〃将控件选中的数据置于系统剪贴板中DataGridView粘贴代码if DataGridViewl.CurrentCell.Value二二nullreturn;int insertRowIndex=DataGridViewl.CurrentCell.Rowindex;string pasteText=Clipboard.GetTextO;〃从系统剪贴板中获取数据if string.IsNul lOrEmpt^pasteTextreturn;string[]lines=pasteText.Split,\r;〃按行分组bool isHeader=true;foreachstring linein linesif isHeaderisHeader二false;〃当可复制模式中具有标题时的过滤操作}else{string[]vals=line.Split\t;〃按tab空格分组if vals.Length-1!=DataGridViewl.ColumnCountthrow newApplicationException〃歹ij数错误〃;DataGridViewRow row=DataGridViewl.Rows[insertRowIndex];row.HeaderCell.Value=vals[O];for inti=0;irow.Cells.Count-1;i++row.Cells[i].Value=vals[i+1];insertRowIndex+=l;
五、DatagridView自动编号代码private voiddataGridViewlRowPostPaintobject sender,DataGridViewRowPostPaintEventArgs e〃自动编号与数据库无关Rectangle rectangle=new Rectanglee.RowBounds.Location.X,e.RowBounds.Location.Y,dataGridViewl.RowHeadersWidth-4,e.RowBounds.Height;TextRenderer.DrawTexte.Graphics,e.Rowindex+1,ToStringO,dataGridViewl.RowHeadersDefaultCellStyle.Font,rectangle,dataGridViewl.RowHeadersDefaultCellStyle.ForeColor,TextFormatFlags.VerticalCenter|TextFormatFlags.Right;显示行号
六、指定单元格属性远期合约IF1011IF1012近期合约监控价差目标收益率用户设置监控价差目标收益率用户设置IF
1011200.
016101.808IF1012E
450.015808IF1103□
500.
0168080400.02101;808□00808DO0808IF1106DataGridViewCe11dgcell=new DataGridViewTextBoxCell;〃申明单元格类型this.dgvCss.Rows[i].Cells[k]=dgcell;其实很简朴,只是诸多人不懂得有这个属性但这种方式和带有复选框类型的单元格使用时,一般状况下出错,也给某些人一种错觉认为单元格类型不能这样操作其实是由于你在申明列的时候先申明的checkbox类型的,而这时他们便有一种默认值FormattcdValuc false,当你重新给他赋值单元格类型时便会出现FormattedValue错误,这时你只需给它一种默认值就可以,如this.dgvCss.Rows[i].Cells[k].Value=〃〃;这样便可处理知识点:DatagridView导出数据到Excel(两种措施)二DatagridView中显示密码列WinForm最简朴两GridView同步滚动四DataGridView添加任何控件.DatagridView导出数据到Excel有两种措施:一种是直接运用I/O读写去生成非原则格式的xls文献,速度很快此外种就是直接使用EXCEL的COM组件实现,需要在项目中引用EXCEL的COM组件代码⑴运用I/Oo1privatevoidbutton4_Clickobject sender,EventArgs e23//运用流导出4Exce5save=Execl files*.xls|*.xls;6save=mydata;7save=0;910save=true;1112save=true;13n14save=Export Excel;15save;16Stream myStream;1718try1920myStream=save;2122catch2324return;252627//StreamWritersw=new StreamwritermyStream,System.Text.Encoding.GetEncodingngb2312;28StreamWriter sw=new StreamWritermyStream,System.Text.Encoding.GetEncoding-0;string str=H H;29try3031//写标题3233t;for inti=0;ithis.DataGridViewl.ColumnCouni++3435ifi03637nstr+=\t;383940str+=DataGridViewl.Columns[i].HeaderText;414243sw.WriteLinestr;44//写内容454647for intj=0;jDataGridViewl.Rows.Count;j++48string tempStr=;49t;k++for intk=0505152if k053n tempStr+=\t;545556tempStr+=DataGridViewl.Rows[j].Cells[k].Value.ToString;575859sw.WriteLinetempStr;606162sw.Close;63myStrearn.Close;64656667catchException ex6869MessageBox.Showex.ToString;707172finally7374sw.Close;75myStrearn.Close;7677//System.Diagnostics.Stopwatch swT=new System.Diagnosties.Stopwatch;78//swT.Start;799tsi=swT.ElapsedMilliseconds;80//MessageBox.Showtsi.ToString+n\nn;81复制代码
(2).运用组件首先添加Excel引用实现代码1public staticvoid DataGridViewToExcelstring,DataGridView myDGVstring save=;//bool false;Save saveDialog=new Save;n nsaveDialog.DefaultExt=xls;文献|*.saveDialog.Filter=Excel xlsn;saveDialog.=;saveDialog.ShowDialog;save=saveDialog.;10//被点了取消if saven:n0return;11Microsoft.Office.Interop.Excel.Application xlApp=ne12wMicrosoft.Office.Interop.Excel.Application;13if xlApp==null14无法仓立对象,也许您的机子未安装15MessageBox.Show ExcelExcel;16return;171819Microsoft.Office.Interop.Excel.Workbooks workbooks=xlApp,Workbooks;20Microsoft.Office.Interop.Excel.Workbook workbook=wor kbooks.AddMicrosoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorkshe et;21Microsoft.Office.Interop.Excel.Worksheet worksheeMicrosoft.Office.Interop.Excel.Worksheetworkbook.Worksheets
[1];//获得sheetl22//写入标题2324for inti=0;imyDGV.ColumnCount;i++25[126worksheet.Cells ri4-1]=myDGV.Columns[i].HeaderText;27//写入数值2829for intr=0;rmyDGV.Rows.Count;r++3031for inti=0;imyDGV.ColumnCount;i++3233worksheet.Cells[r+2,i+1]=myDGV.Rows[r].Cells[i].Value;34。
个人认证
优秀文档
获得点赞 0