DataGridViewRowHeader添加文本C#是否允许在DataGridView的RowHeader中添加String?如果是这样,它是如何完成的?我正在编写一个Windows窗体来显示到目前为止的年度客户付款数据。ColumnHeaders显示Jan、Feb、Mar等...而不是DateTime.Now.Year的空白列,我想将它放在RowHeader中,以便它从实际支付数据中脱颖而出。privatevoiddtgworkingdays_DataBindingComplete(objectsender,DataGridViewBindingCompleteEventArgse){this.FillRecordNo();}privatevoidFillRecordNo(){for(inti=0;i另请参阅在DataGridView的行标题中显示行号。datagridview1.Rows[0].HeaderCell.Value="Yourtext";有效。您不必使用RowValidated事件,这只是我用于小型测试应用程序以确保其正常工作的事件,但这会为您指定的任何年份设置行(而不是列)标题文本。实际上,在CellFormatting事件中可能会更好.privatevoiddataGridView_RowValidated(objectsender,DataGridViewCellEventArgse){DataGridViewgridView=senderasDataGridView;if(null!=gridView){gridView.Rows[e.RowIndex].HeaderCell.Value="2009";}}编辑:这里是我用来演示解决方案的整个TestForm尽可能简单。确保你的RowHeadersWidth足够宽以显示文本。#region使用System.ComponentModel;使用System.Windows.Forms;#endregionnamespaceDataGridViewTest{publicclassGridTest:Form{//////必需的设计器变量。///私有IContainer组件;私有数据网格视图数据网格视图1;私人DataGridViewTextBoxColumn月份;publicGridTest(){InitializeComponent();}//////清理所有正在使用的资源。//////如果托管资源应该被释放则为真;否则,假的。protectedoverridevoidDispose(booldisposing){if(disposing&&(components!=null)){components.Dispose();}base.Dispose(处理);}privatevoiddataGridView_RowValidated(objectsender,DataGridViewCellEventArgse){DataGridViewgridView=senderasDataGridView;if(null!=gridView){gridView.Rows[e.RowIndex].HeaderCell.Value="2009";}}#regionWindows窗体设计器生成的代码//////设计器支持所需的方法-不要使用c修改///此方法的内容颂编辑器。///privatevoidInitializeComponent(){this.dataGridView1=newSystem.Windows.Forms.DataGridView();this.Month=newSystem.Windows.Forms.DataGridViewTextBoxColumn();((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();这个.SuspendLayout();////dataGridView1//this.dataGridView1.AutoSizeColumnsMode=System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;this.dataGridView1.ColumnHeadersHeightSizeMode=System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;this.dataGridView1.Columns.AddRange(newSystem.Windows.Forms.DataGridViewColumn[]{this.Month});this.dataGridView1.Dock=System.Windows.Forms.DockStyle.Fill;this.dataGridView1.Location=newSystem.Drawing.Point(0,0);this.dataGridView1.Name="dataGridView1";this.dataGridView1.RowHeadersWidth=100;this.dataGridView1.Size=newSystem.Drawing.Size(745,532);this.dataGridView1.TabIndex=0;this.dataGridView1.RowValidated+=newSystem.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_RowValidated);////月//this.Month.HeaderText="月";this.Month.Name="月份";////Form1//this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,13F);this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;this.ClientSize=newSystem.Drawing.Size(745,532);this.Controls.Add(this.dataGridView1);this.Name="Form1";this.Text="Form1";((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();这个.ResumeLayout(false);}#endregion}}这是因为你的第一列(行标题列)的宽度!增加它的宽度,你可以看到它的价值!您可以使用此命令:dgv1.RowHeadersWidthSizeMode=DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;(注意:您必须先设置dgv1.RowHeadersVisible=true;)我遇到了同样的问题,但我注意到在datagrid.visible属性更改后,我的数据网格缺少行标题尝试使用Datagrid.visiblechanged事件更新行标题。是的,你可以DataGridView1.Rows[0].HeaderCell.Value="mytext";我有同样的问题。无法使用我的数据绑定网格让标题列显示行标题数据(简单行号)。一旦我将代码移动到事件“DataBindingComplete”,它就起作用了。对不起,额外的代码。我想提供一个工作示例,但没有时间将其全部删除,因此只需剪切并粘贴我的一些应用程序并修复它以供您运行。干得好:使用系统;使用System.Collections.Generic;使用系统数据;使用System.Windows.Forms;使用System.Windows.Forms.DataVisualization.Charting;namespaceWindowsFormsApplication3{publicpartialclassForm1:Form{privateListpts=newList();publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){InsertPoint(10,20);插入点(12,40);插入点(16,60);插入点(20,77);插入点(92,80);生成网格();}publicvoidInsertPoint(intparameterValue,intcommandValue){DataPointpt=newDataPoint();pt.XValue=命令值;pt.YValues[0]=参数值;pts.Add(pt);}privatevoidMakeGrid(){dgv1.SuspendLayout();DataTabledt=newDataTable();dt.Columns.Clear();dt.Columns.Add("参数");dt.Columns.Add("命令");//***AddDatatoDataTablefor(inti=0;i我认为它应该是:dataGridView1.Columns[0].HeaderCell.Value="mytext";foreach(DataGridViewRowrowindatagrid.Rows)row.HeaderCell.Value=String.Format("{0}",row.Index+1);这是一个小小的“政变”公共类DataGridViewRHEx继承DataGridView受保护的覆盖函数CreateRowsInstance()AsSystem.Windows.Forms.DataGridViewRowCollectionSubdvgRCChanged(senderAsObject,eAsSystem.ComponentModel.CollectionChangeEventArgs)如果e.Action=System.ComponentModel.CollectionChangeAction.AddThenDimdgvRowAsDataGridViewRow=e.ElementdgvRow.DefaultHeaderCellType=GetType(DataGridViewRowHeaderCellEx)EndIfEndSubEnd类公共类DataGridViewRowHeaderCellEx继承DataGridViewRowHeaderCellProtectedOverridesSubPaint(graphicsAsSystem.Drawing.Graphics,clipBoundsAsSystem.Drawing.Rectangle,cellBoundsAsSystem.Drawing.Rectangle,rowIndexAsInteger,dataGridViewElementState为System.Windows.Forms.DataGridViewElementStates,value为Object,formattedValue为Object,errorText为String,cellStyle为System.Windows.Forms.DataGridViewCellStyle,advancedBorderStyle为System.Windows.Forms.DataGridViewAdvancedBorderStyle,paintParts为System.Windows.Forms。DataGridViewPaintParts)IfNotMe.OwningRow.DataBoundItemIsNothingThenIfTypeOfMe.OwningRow.DataBoundItemIsDataRowViewThenEndIfEndIf'HEREYOUCANUSEDATAGRIDROWTAGTOPAINTSTRING格式化值=CStr(Me.DataGridView.Rows(rowIndex).Tag)MyBase.Paint(graphics,clipBounds,cellBounds,rowIndex,dataGridViewElementState,value,formattedValue,errorText,cellStyle,advancedBorderStyle,paintParts)EndSubEndClass是首先,挂钩添加事件列:this.dataGridView1.ColumnAdded+=newDataGridViewColumnEventHandler(dataGridView1_ColumnAdded);然后,在您的事件处理程序中,只需附加您想要的文本:privatevoiddataGridView1_ColumnAdded(objectsender,DataGridViewColumnEventArgse)确保选择“启用列记录”。以上就是C#学习教程:在DataGridView行表头添加文本,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
