DataGridView вставка ячеек из буфера обмена - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Столкнулся с такой проблемой. Есть датагрид, из него копируются ячейки (количество и диапазон неизвестен) в буфер обмена, их нужно вставить в этот же датагрид в какое-либо другое место (на усмотрение юзера). Гуглил этот вопрос долго и упорно, но ничего лучше чем вставка всего скопированного диапазона в каждую выделенную ячейку (читай мультилайн в каждой ячейке датагрида) не получилось. Проще говоря, каждая ячейка, из всего выделенного диапазона, после комбинации Ctrl-V заполняется всем содержимым буфера обмена целиком, с переносом строки внутри ячейки (в случае если копируется и вставляется один столбец), если копируется два столбца, то значения ячеек, в пределах одной строки, вставляются через табуляцию, ну а столбцы все так же друг под другом через перенос строки. Можно каким-то образом делать вставку по принципу одно значение - одна ячейка, а не бухать в ячейку весь буфер разом? Пытался разбить текст буфера по управляющим символам "\n" и подобным, но InStr выдал 0, вставлял содержимое буфера в ворд, в начале никаких переносов строки нету, значит все верно (?), соответственно, ничего не разбилось. Код выложу завтра с утра, если нужен. зы. формат содержимого не важен, я вставлял как текст. ззы. Находил правда пару вариантов на C#, но после адаптации под бейсик они не работали, т.е. ничего вообще не вставлялось.
null

Решение задачи: «DataGridView вставка ячеек из буфера обмена»

textual
Листинг программы
  1.  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.         DataGridView1.ColumnCount = 3
  3.         DataGridView1.Columns(0).Name = "Код студена"
  4.         DataGridView1.Columns(1).Name = "ФИО студента"
  5.         DataGridView1.Columns(2).Name = "Телефон"
  6.  
  7.         Dim row As String() = New String() {"1", "Иван И", "+79999999"}
  8.         DataGridView1.Rows.Add(row)
  9.         row = New String() {"2", "Серей К", "+79994399"}
  10.         DataGridView1.Rows.Add(row)
  11.         row = New String() {"3", "Татяна Ю", "+79994999"}
  12.         DataGridView1.Rows.Add(row)
  13.         row = New String() {"4", "Олга И", "+72399999"}
  14.         DataGridView1.Rows.Add(row)
  15.     End Sub
  16.     Private Sub DataGridView1_KeyUp(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyUp
  17.         If e.Control And e.KeyCode = Keys.V Then
  18.             Dim tClipboard() As String
  19.             Dim arT() As String
  20.             Dim i, ii As Integer
  21.             Dim c, cc, r As Integer
  22.             Dim tline As String
  23.             tClipboard = Clipboard.GetText().Split(vbLf)
  24.             r = DataGridView1.SelectedCells(0).RowIndex
  25.             c = DataGridView1.SelectedCells(0).ColumnIndex
  26.             For i = 0 To tClipboard.Length - 1
  27.                 If tClipboard(i) <> "" Then
  28.                     tline = tClipboard(i)
  29.                     If tline.StartsWith(vbTab) = True Then
  30.                         tline = tline.Substring(1, tline.Length - 1)
  31.                     End If
  32.                     arT = tline.Split(vbTab)
  33.                     cc = c
  34.                     For ii = 0 To arT.Length - 1
  35.                         If cc > DataGridView1.ColumnCount - 1 Then Exit For
  36.                         If r > DataGridView1.Rows.Count - 1 Then Exit Sub
  37.                         With DataGridView1.Item(cc, r)
  38.                             .Value = arT(ii).TrimStart
  39.                             MessageBox.Show(" Index " & ii & " row " & r & " col " & cc)
  40.                         End With
  41.                         cc = cc + 1
  42.                     Next
  43.                     r = r + 1
  44.                 End If
  45.             Next
  46.         End If
  47.     End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы