2016-04-05 6 views
0

У меня есть многострочные текстовое поле с этой внешностью:Multiline Textbox к DataGridView

A#B 
C# 
D#E 

, и я хочу, чтобы заполнить мои datagridview к чему-то вроде этого:

_________ 
|A|BC|D|E| 

Я имею в виду, я хочу раскол, когда есть «#», но я не хочу многострочные ячейки в datagridview.

Я попробовал этот код:

Dim sup() As String = TextBox1.Text.Split(vbCr, vbLf, vbTab, " "c, "#") 
DataGridView1.Rows.Add(sup(0), sup(1), sup(2),sup(3)) 

, но он говорит, что идет сбился границы ... Спасибо!

Редактировать: Ошибка «Исключить из диапазона исключений».

Если я вставить значения TextBox в Microsoft Word они приходят, как это: textbox to word

+0

Вы разместили точку останова на строке 'Rows.Add()' и проверили массив? –

+0

Что вы имеете в виду с точкой останова? – noidea

+0

[Как установить простую точку останова] (https://msdn.microsoft.com/en-us/library/k80ex6de (v = vs.100) .aspx) --- [Использование контрольных точек] (https: // msdn .microsoft.com/en-us/library/5557y8b4.aspx) --- [Точки останова и инструменты отладки] (http://www.homeandlearn.co.uk/NET/nets5p6.html) –

ответ

0
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick 
    If DataGridView1.RowCount = 1 Then DataGridView1.Rows.Clear() 
    Call dgvstuff() 
    Timer1.Stop() 
End Sub 


Sub dgvstuff() 
    Dim sup2 = TextBox2.Text.Replace("#", "").Replace(">", " "c) 
    Dim sup() = sup2.Split(" "c, "#", vbCrLf, vbTab) 

    With DataGridView1 
     .Rows(0).Cells(0).Value = sup(1).ToString 
     .Rows(0).Cells(1).Value = sup(7).ToString 
     .Rows(0).Cells(3).Value = sup(4).ToString 
    End With 
End Sub 

Я действительно не знаю, почему, но это работает как это. Кто-нибудь знает лучший/чистый способ? Tks

1

Если вы уверены, что вы будете разделив ваше текстовое поле с 3 #, то вы могли бы использовать что-то вроде этого после создания 3 колонки в вашем DataGridView

Dim myStr As String 
Dim substring As String 
Dim strArray() As String 
Dim columnInt as Integer = 0 

myStr = Textbox1.Text 
strArray = myStr.Split("#") 

For i = 0 to strArray.Length - 1 
Datagridview.Rows(0).Cells(columnInt).Value = strArray(i) 
columnInt += 1 
next 

Поскольку я не совсем уверен, как вы хотите, эти данные появятся точно, вы можете также необходимо объявить кол столбцам она должна быть больше, чем 3. Добавьте этот код перед первым для Заявление:

For i = 0 to strArray.Length - 1 
DataGridView.Columns.Add("YourText","YourText") 
Next 

Непрошеный, но он должен доставить вас в нужное место! * Edit: Обновленный после тестирования

+0

У меня такая же ошибка .. «Index Out of Range Exception». – noidea

+0

обновил мой вопрос. – noidea

+0

Я сделал несколько изменений, но это отлично работает после тестирования. Имейте в виду, что я не уверен, что вы хотите назвать своими столбцами, поэтому в разделе «DatagridView.Columns.add() вставьте, как вы хотите, чтобы эти столбцы отображались как (сначала как имя для доступа к этому столбцу позже, второе как показано для пользователя). Имейте в виду, что я предполагаю, что вам нужна только 1 строка данных. –

Смежные вопросы