Visual Studio 如何向datagridview单元格而不是整列添加按钮

u59ebvdq  于 2022-12-23  发布在  其他
关注(0)|答案(8)|浏览(138)

如何将按钮添加到DataGridView中的行单元格而不是整个列?

q43xntqr

q43xntqr1#

我觉得艾利安的答案很接近了,试试这个.

if ((string)table.Rows[0].Cells[0].Value == "I should be a button") {
   // you can add formatting or values to the button before assigning it here
   table.Rows[0].cells[0] = new DataGridViewButtonCell();
}
u1ehiz5o

u1ehiz5o2#

我认为最好的答案是:Hide gridview button。您需要做的就是在需要按钮的位置添加一个DataGridViewButtonCell,在不需要按钮的位置添加一个DataGridViewTextBoxCell。该列必须是DataGridViewButton类型。

b1zrtrql

b1zrtrql3#

在SO中看到这个类似的帖子,可能会有帮助
adding control to gridview
如果是成功表单,请查看此MSDN帖子
Column Types in the Windows Forms DataGridView Control
或者这个代码项目后...虽然它给出了添加一个图像按钮的例子
DataGridView Image Button Cell
@tmax在这种情况下,您可以将按钮创建代码放在GridView_RowCreated事件中,如下所示

void GridView_RowCreated(Object sender, GridViewRowEventArgs e)
  {   
     if(e.Row.RowType == DataControlRowType.Header)
      {   
           //Button creation code here        
      } 
  }
rur96b6h

rur96b6h4#

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    Button btn = new Button();
    //btn attributes
    dataGridView1.Rows[0].Cells[3].Value = new Button();
}

试试这个。

im9ewurl

im9ewurl5#

我最终做的是将一个DataGridView堆叠在另一个DataGridView之上。我关闭了边框、网格线和滚动条。然后创建动态按钮列以匹配只有一行按钮的主DataGridView。然后我使用ColumnWidthChanged事件处理程序一起调整两个DataGridView的大小。无论如何,这是我目前的解决方案。

w8f9ii69

w8f9ii696#

DataGridViewButtonColumn dataGridViewButtonColumn = new DataGridViewButtonColumn();
        dataGridViewButtonColumn.Name = "Select";
        dataGridViewButtonColumn.HeaderText = "Select";
  
        dataGridViewButtonColumn.ReadOnly = false;
        dataGridView1.Columns.Add(dataGridViewButtonColumn);
fcg9iug3

fcg9iug37#

将数据源分配给gridviewCTRL后,您可以使用下面的代码添加带有按钮的新列。

DataGridViewButtonColumn startbtn = new DataGridViewButtonColumn();
startbtn.Name = "Action";
startbtn.Text = "Start";
startbtn.UseColumnTextForButtonValue=true;
int columnIndex = 6;
gridviewCTRL.Columns.Insert(columnIndex, startbtn);

这将把按钮添加到定义列索引处的每一行。如果你想呈现条件AccessibleObject,那么你可以做类似下面的事情。

foreach (DataGridViewRow rowdata in gridviewCTRL.Rows)
{
    // this is just an example in my case i am checking a previous column value
    if (rowdata.Cells[5].Value=="XYZ")
    {  
          rowdata.Cells[6] = new DataGridViewTextBoxCell();
    }
}

这样你就可以在Winforms c#中动态呈现/显示GridView中的控件。
上面的代码简单地用新单元格更新单元格。我们不能从单元格中删除按钮,也不能删除整个按钮,所以我们可以用一个新单元格的首字母来覆盖按钮的可见性。

xlpyo6sf

xlpyo6sf8#

我不确定这是否有帮助,但您也可以考虑使用TableLayoutPanel。
参考:Winforms TableLayoutPanel adding rows programmatically

相关问题