TextBox转DataGridView代码优化:未指定计时值时Column3默认设为1
优化后的CopyTextBoxToDataGridView实现
以下是满足需求的优化代码,当TextBox输入未指定计时值时,DataGridView的Column3会默认填充为1:
private void CopyTextBoxToDataGridView() { // 分割TextBox中的每行内容,排除空行 string[] lines = textBox1.Text.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); // 初始化DataGridView列(仅首次执行) 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[] { '-', ']' }, StringSplitOptions.RemoveEmptyEntries); // 提取并清理各列内容 string col1 = splitLine.Length > 0 ? splitLine[0].Trim('[', ']') : string.Empty; string col2 = splitLine.Length > 1 ? splitLine[1].Trim('[', ']') : string.Empty; string col3 = splitLine.Length > 2 ? splitLine[2].Trim() : string.Empty; // 核心优化:未指定有效计时值时,默认设为1 if (string.IsNullOrWhiteSpace(col3) || !int.TryParse(col3, out _)) { col3 = "1"; } // 保留原有业务逻辑:若下一行以[开头,Column3设为1 if (i + 1 < lines.Length && lines[i + 1].StartsWith("[")) { col3 = "1"; } dataGridView1.Rows.Add(col1, col2, col3); } }
关键优化点
- 分割文本时加入
StringSplitOptions.RemoveEmptyEntries,避免空行、空分割项干扰 - 用
Trim('[', ']')替代多次Replace操作,更简洁高效 - 新增默认值判断逻辑:只要Column3的取值为空、空白字符,或者无法转换为有效整数,就自动设为"1"
- 保留原有的下一行判断逻辑,确保原有业务逻辑正常运行
内容的提问来源于stack exchange,提问作者Varta
相关产品推荐
相关产品推荐

