1

这是我的datagridview的视图..

在此处输入图像描述

这是翻译按钮,当我单击它时,旁边会出现一个新行,并且该行中还会初始化一个新按钮。 按下翻译按钮时

现在我想要的是,如果单击翻译按钮,出现的新行不应该包含翻译按钮..我已经动态初始化了按钮..这是我的代码。

   private void button()
    {
        var buttonCol = new DataGridViewButtonColumn();
        buttonCol.Name = "ButtonColumnName";
        buttonCol.HeaderText = "Header";
        buttonCol.Text = "Translate";
        buttonCol.Name = "Edit";
        buttonCol.Width = 30;
        buttonCol.UseColumnTextForButtonValue = true;
        dataGridView1.Columns.Add(buttonCol);
    }

这是单击按钮时的事件..

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
       // button();
        Column_handling();
        if (e.ColumnIndex == 10)
        {
            DataRow dt = datarows.NewRow();
            dt[0] = this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
            dt[1] = this.dataGridView1.CurrentRow.Cells[1].Value.ToString();
            dt[2] = this.dataGridView1.CurrentRow.Cells[2].Value.ToString();
            dt[3] = this.dataGridView1.CurrentRow.Cells[3].Value.ToString();
            dt[4] = this.dataGridView1.CurrentRow.Cells[4].Value.ToString();
            dt[5] = this.dataGridView1.CurrentRow.Cells[5].Value.ToString();
            dt[6] = this.dataGridView1.CurrentRow.Cells[6].Value.ToString();
            dt[7] = this.dataGridView1.CurrentRow.Cells[7].Value.ToString();
            dt[8] = this.dataGridView1.CurrentRow.Cells[8].Value.ToString();
            dt[9] = this.dataGridView1.CurrentRow.Cells[9].Value.ToString();
            datarows.Rows.InsertAt(dt, e.RowIndex+1);
            dataGridView1.Refresh();
        }    

有任何想法吗?

4

3 回答 3

2

您必须将单元格类型更改为TextBox.

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
        Column_handling();
        if (e.ColumnIndex == 10)
        {
            DataRow dt = datarows.NewRow();
            //fillign vlaues
            datarows.Rows.InsertAt(dt, e.RowIndex + 1);

            var row = this.dataGridView1.Rows[e.RowIndex + 1];
            var cell = new DataGridViewTextBoxCell();
            cell.Value = string.Empty;

            row.Cells["ButtonColumnName"] = cell;

            cell.ReadOnly = true;

            dataGridView1.Refresh();
        }
}

我制作了单元格ReadOnly以阻止用户向其中输入任何内容。

于 2013-07-10T06:54:59.807 回答
0

Button 方法传递一个布尔字段作为参数,并在单击 Translate 按钮创建行时将其设置为 false。
然后将Visibility属性设置为此布尔字段

否则设置默认值 true。

于 2013-07-10T06:53:08.340 回答
0

好的,我知道这是一个旧帖子,但无论如何......这对我有用。

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if ((dataGridView1.Columns[e.ColumnIndex] as DataGridViewButtonColumn) != null && dataGridView1.Rows[e.RowIndex].IsNewRow)
    {
        DataGridViewCellStyle emptyCellStyle = new DataGridViewCellStyle();
        emptyCellStyle.Padding = new Padding(75, 0, 0, 0);
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style = emptyCellStyle;
    }
}
于 2017-09-21T07:21:12.423 回答