2013-08-01 60 views
0

例如,在一個形式中的dataGridView細胞的詞語是:一個;二;三.....解析文本從DataGridView到文本框

我想分開該顯示在窗口2在文本框:

text in textBox1: one 
text in textBox2: two 
text in textBox3: three 

我該如何解析?

我填寫的DataGrid中formOne這樣:

foreach (DataGridViewCell cell in dataGridView1.SelectedCells) 
     { 

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

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


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

     }  
+0

我正確的假設你只是想從DataGridView中的某些單元格中提取值並將這些值放在TextBoxes中? – Recipe

+0

我想從dataGridView中的一個單元格提取到更多帶分隔符的文本框; – John

回答

2
string cellValue = "one;two;three"; 
// should contain at least three values 
var values = cellValue.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); 
textBox1.Text = values[0]; 
textBox2.Text = values[1]; 
textBox3.Text = values[2]; 

考慮也動態地創建texboxes如果有不同數量的單元格值可能的。另一個選擇是使用網格。


另一種選擇 - 獲得texboxes的名單:

var textBoxes = new List<TextBox> { textBox1, textBox2, textBox3 }; 

或者,如果您將添加texboxes,形成正確的順序:

var textBoxes = Controls.OfType<TextBox>().ToList(); 

,並填寫他們都在一個循環

string cellValue = "one;two;three"; 
var values = cellValue.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); 

for (int i = 0; i < values.Length; i++) 
    if (textBoxes.Count < i) // also you can ensure you have textBox for value 
     textBoxes[i].Text = values[i]; 
+0

我使用的選項列表的texboxes,但是當我填寫最後texbox調用錯誤的索引...陣列的最後一個索引是「」也許有一個錯誤或在最後有一個;並分割添加一個索引的數組和應用程序關閉 – John

+0

@ user2641465使用'StringSplitOptions.RemoveEmptyEntries'來避免空值並添加texboxes計數檢查 –