C#控件-显示边框的DataGridViewColumn
默认我们的DataGridView cell是没有边框的,无伦是正常状态还是编辑状态,因为系统把TextBox的BorderStyle值改成了None,所以这里首先要把BorderStyle值改回来,那至于是FixedSingle还是Fixed3D,就得看你自己需要了,我这里改成了FixedSingle,方便绘制
主要是继承 DataGridViewTextBoxCell 类,需要在这里改点东西代码如下:
publicclassDataGridViewTextBoxEditCell:DataGridViewTextBoxCell{publicoverridevoidInitializeEditingControl(introwIndex,objectinitialFormattedValue,System.Windows.Forms.DataGridViewCellStyledataGridViewCellStyle){base.InitializeEditingControl(rowIndex,initialFormattedValue,dataGridViewCellStyle);TextBoxtextBox=this.DataGridView.EditingControlasTextBox;if(textBox!=null){textBox.BorderStyle=BorderStyle.FixedSingle;//改回边框}}protectedoverridevoidPaint(Graphicsgraphics,RectangleclipBounds,RectanglecellBounds,introwIndex,DataGridViewElementStatescellState,objectvalue,objectformattedValue,stringerrorText,DataGridViewCellStylecellStyle,DataGridViewAdvancedBorderStyleadvancedBorderStyle,DataGridViewPaintPartspaintParts){base.Paint(graphics,clipBounds,cellBounds,rowIndex,cellState,value,formattedValue,errorText,cellStyle,advancedBorderStyle,paintParts);//绘制边框RectanglecellBounds1=newRectangle(cellBounds.X+2,cellBounds.Y+1,cellBounds.Width-4,cellBounds.Height-3);graphics.DrawRectangle(newPen(SystemColors.WindowFrame),cellBounds1);}}publicclassDataGridViewTextBoxEditColumn:DataGridViewColumn{publicDataGridViewTextBoxEditColumn():base(newDataGridViewTextBoxEditCell()){}publicoverrideDataGridViewCellCellTemplate{get{returnbase.CellTemplate;}set{//EnsurethatthecellusedforthetemplateisaCalendarCell.if(value!=null&&!value.GetType().IsAssignableFrom(typeof(DataGridViewTextBoxEditCell))){thrownewInvalidCastException("MustbeaCalendarCell");}base.CellTemplate=value;}}}应用:privatevoidForm1_Load(objectsender,EventArgse){DataTabledt=newDataTable();dt.Columns.Add("name");dt.Columns.Add("name1");DataGridViewTextBoxEditColumndataGridViewColumn=newDataGridViewTextBoxEditColumn();dataGridViewColumn.HeaderText="columns";dataGridViewColumn.DataPropertyName="name";this.dataGridView1.Columns.Add(dataGridViewColumn);DataGridViewTextBoxEditColumndataGridViewColumn1=newDataGridViewTextBoxEditColumn();dataGridViewColumn1.HeaderText="columns";dataGridViewColumn1.DataPropertyName="name1";this.dataGridView1.Columns.Add(dataGridViewColumn1);this.dataGridView1.AutoGenerateColumns=false;this.dataGridView1.DataSource=dt;}应该还有更多好的办法,希望大家能批评改正
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。