文本框数据到Gridview

问题描述 投票:0回答:1

我尝试下面的代码运行正常,但请参考图片。

  private void CopyTextBoxToDataGridView()
    {
        // Split the lines from the textBox1 text
        string[] lines = textBox1.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.None);

        if (dataGridView1.Columns.Count == 0)
        {
            dataGridView1.Columns.Add("Column1", "Column 1");
            dataGridView1.Columns.Add("Column2", "Column 2");
            dataGridView1.Columns.Add("Column3", "Column 3");
        }

        dataGridView1.Rows.Clear();


        for (int i = 0; i < lines.Length; i++)
        {
            string[] splitLine = lines[i].Split(new char[] { '-', ']' });
            string col1 = splitLine.Length > 0 ? splitLine[0] : string.Empty;
            string col2 = splitLine.Length > 1 ? splitLine[1] : string.Empty;
            string col3 = splitLine.Length > 2 ? splitLine[2] : string.Empty;


            // Check if the next line starts with '['
            if (i + 1 < lines.Length && lines[i + 1].StartsWith("["))
            {
                col3 = "1"; // Set "1" in column 3
            }

            dataGridView1.Rows.Add(col1.Replace("[", "").Replace("]", ""), col2.Replace("[", "").Replace("]", ""), col3);
        }
    }

输出 enter image description here

如果文本框输入未应用像 2 这样的计时,则默认情况下第 3 列应为 1。

c# winforms
1个回答
0
投票

这很容易。只需修剪并检查值即可。 您可以添加一个简短的 if 语句,例如

(splitLine[2].toString() != "2" ? "1" : "2")
或者检查
 (string.IsNullOrEmpty(splitLine[2]) ? "1" : "2")
是否为空或为空。 但说实话...像这样添加值是非常非常糟糕的。您知道,每个人对于输入值都有自己的想法,这几乎总是会引起问题。我建议为每一列使用文本框,并在按下“应用”或“插入”按钮后,检查文本框中的每个输入是否包含您想要接受的值。

大多数错误发生在用户输入时!如果有人输入 4 而不是 4 怎么办?

© www.soinside.com 2019 - 2024. All rights reserved.