首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DataGridViewTextBoxCell转换为DatagridVIewButtonCell WinForms

将DataGridViewTextBoxCell转换为DatagridVIewButtonCell WinForms
EN

Stack Overflow用户
提问于 2015-07-28 08:04:26
回答 2查看 757关注 0票数 0

我需要在具体的行上将DataGridViewTextBoxCell转换为DatagridVIewButtonCell。我试图使用以下代码来实现这一点:

代码语言:javascript
复制
foreach (DataGridViewRow row in dataGridViewImport.Rows)
{
      if(row.Cells["Active"].Value.Equals("false"))
      {
            DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
            row.Cells["check"] = buttonCell;
      }
}

但没起作用。有人知道会有什么问题吗?这种行为是在我绑定dataSource之后开始的。

此外,我还试图创建新列及其工作,但我只需要针对特定行的按钮,而不是所有列的按钮。

代码语言:javascript
复制
 DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn();
            btnColumn.Name = "test";
            dataGridViewImport.Columns.Add(btnColumn);

所有数据库代码:

代码语言:javascript
复制
 public void prepareDataGridView()
        {
            dataTable = new DataTable();
            addColumnsToDataTable(dataTable);
            fillDataTable();
            dataGridViewImport.DataSource = dataTable;
            addHeaderCheckBox();
            addButtonsToUnactiveRows();
            styleDataGrid();      
        }


public void addColumnsToDataTable(DataTable dataTable)
        {
            dataTable.Columns.Add("check");
            dataTable.Columns.Add("Position");
            dataTable.Columns.Add("Positionsindex");
            dataTable.Columns.Add("Textindex");
            dataTable.Columns.Add("Stichwort");
            dataTable.Columns.Add("Menge");
            dataTable.Columns.Add("EH");
            dataTable.Columns.Add("Active");
        }

      private void fillDataTable()
    {
        //FILL DATA
    }   


public void addButtonsToUnactiveRows()
   {
     foreach (DataGridViewRow row in dataGridViewImport.Rows)
        {
              if(row.Cells["Active"].Value.Equals("false"))
              {
                    DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
                    row.Cells["check"] = buttonCell;
              }
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-28 09:52:51

问题是在事件处理中,因为首先,我绑定数据,然后绘制DataGrid,然后尝试添加buttons.But,我需要在drawing.So之前添加按钮,然后用这个事件找到解决方案。

代码语言:javascript
复制
private void dataGridViewImport_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            addButtonsToUnactiveRows();
        }
票数 1
EN

Stack Overflow用户

发布于 2015-07-28 09:02:40

我尝试了你的代码与一些(不知道你是否错误地键入某个名称或意图),如下所示,它的工作。

代码语言:javascript
复制
    DataTable dataTable;

    private void Form1_Load(object sender, EventArgs e)
    {
        prepareDataGridView();
    }

    public void prepareDataGridView()
    {
        dataTable = new DataTable();
        addColumnsToDataTable(dataTable);
        fillDataTable();
        avaEditDataGridViewImport.DataSource = dataTable;
        //addHeaderCheckBox();
        addButtonsToUnactiveRows();
        //styleDataGrid();
    }


    public void addColumnsToDataTable(DataTable dataTable)
    {
        dataTable.Columns.Add("check");
        dataTable.Columns.Add("Position");
        dataTable.Columns.Add("Positionsindex");
        dataTable.Columns.Add("Textindex");
        dataTable.Columns.Add("Stichwort");
        dataTable.Columns.Add("Menge");
        dataTable.Columns.Add("EH");
        dataTable.Columns.Add("Active");
    }

    private void fillDataTable()
    {
        for (int j = 1; j <= 10; j++)
        {
            dataTable.Rows.Add(j.ToString(), j, j, j, j, j, j, (j % 2 == 0 ? true : false));
        }
    }

    public void addButtonsToUnactiveRows()
    {
        foreach (DataGridViewRow row in avaEditDataGridViewImport.Rows)
        {
            if (row.Cells["Active"].Value.ToString().Equals("False"))
            {
                DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
                row.Cells["check"] = buttonCell;
            }
        }
    }

在您的代码和我的代码之间有一些不同(这是有用的):

  • 我不使用addHeaderCheckBox()和styleDataGrid() (这里没有显示)。
  • fillDataTable()是内部代码。
  • DataGridView ( addButtonsToUnactiveRows() )和if语句。

希望你能尽快解决:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31670639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档