代码之家  ›  专栏  ›  技术社区  ›  KL_

修剪DataGridView单元格中的空格

  •  2
  • KL_  · 技术社区  · 7 年前

    我创建了一个DataGridView1,然后用列表填充。每当我单击单元格时,它都应该引用它,如果编辑时单元格不包含值,则会引发异常。不幸的是,一些单元格在开始时是用空格(“”)创建的,我希望能够(在离开单元格时)在它为null和/或为“”之间进行过滤。

    我知道Trim()删除了所有尾随空格和继续空格(“####”->“####”),只是似乎不理解一个单元格中有一个被修剪的空格怎么不等于”。不幸的是,我不能使用.Length(),因为单元格值大多也是1位整数。

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
       if (row.Cells[0].Value.ToString() != null && row.Cells[0].Value.ToString().Trim() != "")
       {
          //it always hits here and passes through the conditional statement
          //contains method to set textbox equal to cell value
       }
    

    最大的问题是每当单元格中剩下一个单数空格时,因为当我尝试使用.ToString()时,它会抛出一个错误“输入字符串的格式不正确”。

    提前感谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   blaze_125    7 年前

    你发布的代码和我发布的代码之间的主要区别在于这一部分:

    你的

    if (row.Cells[0].Value.ToString() != null && row.Cells[0].Value.ToString().Trim() != "")

    if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().Trim() != "")

    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    
    namespace TrimBlanksInDGV_45358146
    {
        public partial class Form1 : Form
        {
            public static string whatwasit = "";
            public Form1()
            {
    
                InitializeComponent();
                List<listitem> datasource = new List<listitem>();
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = "name1", last = "last1" });
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = "name2", last = "last2" });
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = "name3", last = "last3" });
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = "name4", last = "last4" });
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = " ", last = "last5" });
                datasource.Add(new TrimBlanksInDGV_45358146.listitem { name = "", last = "last6" });
                dataGridView1.DataSource = datasource;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                foreach (DataGridViewRow row in dataGridView1.Rows)
                {
                    if (row.Cells[0].Value != null && row.Cells[0].Value.ToString().Trim() != "")
                    {
                        whatwasit = "not empty or \"\"";
                    }
                    else
                    {
                        whatwasit = "empty or \"\"";
                    }
                }
            }
        }
    
        public class listitem
        {
            public string name { get; set; }
            public string last { get; set; }
        }
    }