【问题标题】:Buttons in a DataGridViewDataGridView 中的按钮
【发布时间】:2019-07-15 23:07:11
【问题描述】:

我是初学者,我遇到了 DataGridView 中的按钮问题。

当我用网格行号的文本填充单元格时,没问题,文本是正确的,如果我添加新行,则保持正确。

但是,如果我将相同的文本放在 Button 上,所有的行都会被重新绘制,并且所有的 Button 都具有创建的最后一个 Button 的文本。

我的代码是在DataGridView中的一个Button的点击事件中:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    var senderGrid = (DataGridView)sender;
    textBox1.Text += "ligne clické " + e.RowIndex+ Environment.NewLine;
    if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
        e.RowIndex >= 0)
    {
        textBox1.AppendText( "bouton clické  "+btn.Tag+ Environment.NewLine) ;
    }
}

private void button1_Click(object sender, EventArgs e)
{
    string[] row;
    row = new string[] { "", "Product "+dataGridView1.RowCount };            
    dataGridView1.Columns[1].ReadOnly = true;
    btn.HeaderText = "Click Data";           
    Random rnd = new Random();
    int RND = rnd.Next(1, 1003);
    btn.Text = "Click Here"+dataGridView1.RowCount+" " + RND.ToString(); 
    btn.Name = "btn"+RND.ToString();
    btn.Tag = "tag ->" + dataGridView1.RowCount;
    btn.UseColumnTextForButtonValue = true;
    dataGridView1.Rows.Add(row);
}

【问题讨论】:

  • 你能显示更多的代码吗?我认为这是在循环中调用的,也许你涉及到闭包?具体来说,我没有看到 btn 声明。
  • 你在使用 WPF 吗?在这种情况下,您能否提供一些 XAML 代码。
  • 这是一个中奖表格
  • 我编辑了我的帖子以显示完整的代码
  • 你需要澄清你想要做什么。显然,变量btn(您方便地不显示它的定义)是DataGridViewButtonColumn。在button1_Click 事件中,在btn 变量上设置的任何“属性”,例如……btn.Text = "Click Here"+dataGridView1.RowCount+" " + RND.ToString();……。将应用于按钮的“整个”列。我不知道你为什么会有其他期望。如果您阐明您希望此“按钮”列做什么以及您希望它显示什么文本,您将帮助自己和他人。

标签: c# winforms button datagridview


【解决方案1】:

我找到了解决办法

private void button1_Click(object sender, EventArgs e)
    {
        DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
        btn.HeaderText = "Click Data";
        Random rnd = new Random();
        int RND = rnd.Next(1, 1003);
        btn.Text = "Click Here" + dataGridView1.RowCount + " " + RND.ToString();
        btn.Name = "btn" + RND.ToString();
        btn.Tag = "tag ->" + dataGridView1.RowCount;
        int rowIndex = dataGridView1.Rows.Add(btn);

        dataGridView1.Rows[rowIndex].Cells[0].Value = btn.Text;
        dataGridView1.Rows[rowIndex].Cells[1].Value = "Product " + dataGridView1.RowCount;



    }

【讨论】:

  • Edit您的问题以添加信息。不要发布代码作为答案,除非它确实回答了问题。
猜你喜欢
  • 1970-01-01
  • 2016-06-29
  • 2012-09-13
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
相关资源
最近更新 更多