1

我有方法可以更改 datagridView 中的单元格,并且在我重写 text (String) 时工作​​正常。
但我想例如将电子邮件重写为空值,但我不知道该怎么做。
我只能将电子邮件重写为另一封电子邮件(字符串到另一个字符串)

我更改单元格的方法是:

public void ChangeCellEmail(int col, string[] emails)
    {


        string sep = ";";
        string text = "";

        foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
        {


            for (int i = 0; i < emails.Length ;i++)
            {

                if (emails[i].ToString().Trim() != "")
                {


                    text = text + emails[i] + sep ;
                    dataGridView1.Rows[cell.RowIndex].Cells[col].Value = text;
                }
            }

        }

    }

我的方法的调用代码是

            string mail = txtBox1.Text;
            string mail1 = txtBox2.Text;
            string mail2 = txtBox3.Text;
            string mail3 = txtBox4.Text;
            string mail4 = txtBox5.Text;

            string[] mails = new string[] { mail, mail1, mail2, mail3, mail4 };


            frm1.ChangeCellEmail(2, mails);
            this.Dispose();

谢谢你们的帮助。

4

2 回答 2

1

使用以下代码,我可以传入 5 个完整的电子邮件地址,其中一些/全部可能是“空的”,并且tempVar始终包含正确的数据。

public Form1()
    {
        InitializeComponent();

        const string mail = "First";
        const string mail1 = "Second";
        const string mail2 = "Third";
        const string mail3 = "";
        const string mail4 = "Fifth";

        var mails = new string[] { mail, mail1, mail2, mail3, mail4 };

        ChangeCellEmail(2, mails);
    }


    public void ChangeCellEmail(int col, string[] emails)
    {
        var sep = ";";
        var text = "";
        var tempVar = ""; //New temp variable (representing your dataGrid.value)

        for (int emailList = 1; emailList < 5; emailList++)
        {
            for (var i = 0; i < emails.Length; i++)
            {

                if (emails[i].Trim() != "")
                {
                    text = text + emails[i] + sep;
                    tempVar = text;
                }
                else
                {
                    tempVar = string.Empty;
                }
            }

        }

    }

检查每个循环上的 tempVar,你会看到我指的是什么。

于 2013-08-08T11:52:09.410 回答
0

这是一个建议的解决方案:

public void ChangeCellEmail(int emailColumnIndex, string[] emails)
{
  var emailsAsCsv = string.Join(";", emails.Where(e => !string.IsNullOrWhiteSpace(e)));
  foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
  {
    dataGridView1.Rows[cell.RowIndex].Cells[emailColumnIndex].Value = emailsAsCsv;
  }
}

Email这将使用分号分隔的非空电子邮件列表更新选定单元格的列。

用法:

var emailColumnIndex = 2; // The third column in the DataGridView (zero-indexed)
var emails = new[] {txtBox1.Text, txtBox2.Text, txtBox3.Text, txtBox4.Text, txtBox5.Text};
ChangeCellEmail(emailColumnIndex, emails);

希望这可以帮助。

于 2013-08-08T10:27:20.350 回答