尽管 UseColumnTextForButtonText 设置为 true,但 DataGridView 按钮文本未出现
DataGridView button text not appearing despite UseColumnTextForButtonText set to true
我已将按钮列添加到 DataGridView 并希望在其上显示文本 "Compare"。我已将 Text
属性 设置为比较,将 UseColumnTextForButtonValue
设置为真,但没有显示文本:
在运行时也是如此,所以它不仅仅是不显示在设计器中:
如何显示文本?
编辑:为了繁荣起见,这里是生成的 Designer.cs 文件中的代码。我自己还没有向此表单添加 任何 代码,因此不可能有什么东西会进一步重置它。
//
// Compare
//
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Compare.DefaultCellStyle = dataGridViewCellStyle1;
this.Compare.HeaderText = "Compare";
this.Compare.Name = "Compare";
this.Compare.Text = "Compare";
this.Compare.ToolTipText = "Compare the dictionary definition to the system definition";
this.Compare.UseColumnTextForButtonValue = true;
DataGridViewButtonColumn 没有在最后一行的按钮中显示文本。由于在您的示例中您只显示一行,因此未显示。添加更多行,文本将出现在除最后一行之外的所有行中。
Kif答对了:
DataGridViewButtonColumn does not display the text in the button on
the last row. Add some more rows, and the text will appear in all but
the last row.
但是如果你想全部显示你想要的文字(包括最后一行),你可以简单地实现事件处理程序CellValueChanged
并设置单元格值如下:
_yourDataGridView[Compare.Name, rowIndex].Value = "Compire";
虽然有同样的问题,但提供的答案不符合我的要求(添加更多行,而最后一行仍然不显示按钮文本)或没有完全正常工作([= 中的行索引11=] 事件需要 >= 0)。
我还想通过 AllowUserToAddRows
属性 功能来适应这种行为。
为此,datagridview 的 RowsAdded
事件也需要进行一些调整。
这是对我有用的:
UseColumnTextForButtonValue
设置为 true
(对于每个 DataGridViewButtonColumn)并设置其文本。
private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
var grid = (DataGridView)sender;
if (grid.Columns[e.ColumnIndex] is DataGridViewButtonColumn)
{
if (grid.RowCount >= 0)
{
//this needs to be altered for every DataGridViewButtonColumn with different Text
grid.Rows[grid.RowCount - 1].Cells[e.ColumnIndex].Value = "ButtonText";
}
}
}
private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
var grid = (DataGridView)sender;
//this needs to be altered for every DataGridViewButtonColumn with different Text
int buttonColumn = 3;
if (grid.Columns[buttonColumn] is DataGridViewButtonColumn)
{
if (grid.RowCount >= 0)
{
grid.Rows[grid.RowCount - 1].Cells[buttonColumn].Value = "ButtonText";
}
}
}
我已将按钮列添加到 DataGridView 并希望在其上显示文本 "Compare"。我已将 Text
属性 设置为比较,将 UseColumnTextForButtonValue
设置为真,但没有显示文本:
在运行时也是如此,所以它不仅仅是不显示在设计器中:
如何显示文本?
编辑:为了繁荣起见,这里是生成的 Designer.cs 文件中的代码。我自己还没有向此表单添加 任何 代码,因此不可能有什么东西会进一步重置它。
//
// Compare
//
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Calibri", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Compare.DefaultCellStyle = dataGridViewCellStyle1;
this.Compare.HeaderText = "Compare";
this.Compare.Name = "Compare";
this.Compare.Text = "Compare";
this.Compare.ToolTipText = "Compare the dictionary definition to the system definition";
this.Compare.UseColumnTextForButtonValue = true;
DataGridViewButtonColumn 没有在最后一行的按钮中显示文本。由于在您的示例中您只显示一行,因此未显示。添加更多行,文本将出现在除最后一行之外的所有行中。
Kif答对了:
DataGridViewButtonColumn does not display the text in the button on the last row. Add some more rows, and the text will appear in all but the last row.
但是如果你想全部显示你想要的文字(包括最后一行),你可以简单地实现事件处理程序CellValueChanged
并设置单元格值如下:
_yourDataGridView[Compare.Name, rowIndex].Value = "Compire";
虽然有同样的问题,但提供的答案不符合我的要求(添加更多行,而最后一行仍然不显示按钮文本)或没有完全正常工作([= 中的行索引11=] 事件需要 >= 0)。
我还想通过 AllowUserToAddRows
属性 功能来适应这种行为。
为此,datagridview 的 RowsAdded
事件也需要进行一些调整。
这是对我有用的:
UseColumnTextForButtonValue
设置为 true
(对于每个 DataGridViewButtonColumn)并设置其文本。
private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
var grid = (DataGridView)sender;
if (grid.Columns[e.ColumnIndex] is DataGridViewButtonColumn)
{
if (grid.RowCount >= 0)
{
//this needs to be altered for every DataGridViewButtonColumn with different Text
grid.Rows[grid.RowCount - 1].Cells[e.ColumnIndex].Value = "ButtonText";
}
}
}
private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
var grid = (DataGridView)sender;
//this needs to be altered for every DataGridViewButtonColumn with different Text
int buttonColumn = 3;
if (grid.Columns[buttonColumn] is DataGridViewButtonColumn)
{
if (grid.RowCount >= 0)
{
grid.Rows[grid.RowCount - 1].Cells[buttonColumn].Value = "ButtonText";
}
}
}