winforms 递增数据行信头文字Datagridview

qyyhg6bp  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(142)

下面的代码假定每次单击按钮时都会在datagridview上创建一个新列,现在,当单击按钮时,将生成一个名为"New Column 1"的列,但问题是,当单击按钮超过一次时,我希望"New Column 1"会递增到"New Column 1" "New Column 2" "New Column 3" ...,但即使多次单击,"New Column 1"仍会出现。
目前为止我所做的

private void guna2Button4_Click_1(object sender, EventArgs e) {
        guna2DataGridView2.Columns.Clear();

        // Add new column
        string file_path = @"C:\MAIN_TEXT_LOCATION\" + label3.Text + "\\" + label4.Text;
        using (StreamWriter swq = File.AppendText(file_path)) {
            var curr = 0;
            curr++;
            swq.Write("[" + "New Column " + (curr) + "]");
        }
        // Redefine data source
        retrieve_data();
}

我相信我已经错过了一些关键的代码,我必须添加,以使它的工作,但因为我是一个新手,我不能进一步思考,以使它的工作。

tjvv9vkg

tjvv9vkg1#

试试这个

int curr = 0; 
    private void guna2Button4_Click_1(object sender, EventArgs e) {
            guna2DataGridView2.Columns.Clear(); 
            // Add new column
            string file_path = @"C:\MAIN_TEXT_LOCATION\" + label3.Text + "\\" + label4.Text;
            using (StreamWriter swq = File.AppendText(file_path)) {
                
                curr++;
                swq.Write("[" + "New Column " + (curr) + "]");
            }
            // Redefine data source
            retrieve_data();
    }
bakd9h0s

bakd9h0s2#

下面是一个解决方案,它获取字符串中的最后一个数字(int),并将该数字递增1。
将以下类添加到项目中

public static class Helpers
{
    public static string NextValue(this string sender)
    {
        string value = Regex.Match(sender, "[0-9]+$").Value;
        return sender[..^value.Length] + (long.Parse(value) + 1)
            .ToString().PadLeft(value.Length, '0');
    }
}

添加一个private int _columnIndex = 0;的私有int变量,以跟踪创建新列时的最后一个数字。
在表单中添加using System.Text.RegularExpressions;,然后在按钮的click事件中添加新列

public partial class Form1 : Form
{
    private int _columnIndex = 0;
    public Form1()
    {
        InitializeComponent();
    }

    private void NewColumnButton_Click(object sender, EventArgs e)
    {
        dataGridView1.Columns.Add(
            $"newColumnName{_columnIndex +1}", 
            $"New Column {_columnIndex}".NextValue());
        _columnIndex++;
    }
}

我在手动创建列后展开了屏幕截图中的列。

相关问题