#vb.net #datagridview #richtextbox
#vb.net #datagridview #richtextbox
Вопрос:
Я хотел бы изменить цвет фона RichTextBox, который находится в ячейке DataGridView.
Я пробовал использовать
Me.dgvPartTracking.Item(columnIndex, rowIndex).Style.BackColor = Color.LightGreen
Я.dgvPartTracking.Элемент (ColumnIndex, RowIndex).Стиль.ForeColor = Цвет.Черный
но в результате изменяется только фон ячейки, а цвет фона RichTextBox по-прежнему остается белым
Вывод выглядит следующим образом: Пример результата
Метод, который я использовал для назначения RichTextBox в DataGridView.
* Я использую цикл для добавления столбцов и строк, как показано ниже
Dim Col As New DataGridViewRichTextBoxColumn
Col.Name = "schedule" amp; columnCount
Col.HeaderText = "" amp; columnCount
Col.DefaultCellStyle.WrapMode = Windows.Forms.DataGridViewTriState.True
Col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft
Col.Width = 195
Col.ReadOnly = True
Col.SortMode = Windows.Forms.DataGridViewColumnSortMode.NotSortable
Col.Resizable = Windows.Forms.DataGridViewTriState.True
Col.AutoSizeMode = Windows.Forms.DataGridViewAutoSizeColumnMode.NotSet
Col.Visible = True
Me.dgvPartTracking.Columns.Add(Col)
Me.dgvPartTracking.Rows.Add(1)
Я еще не устанавливал цвет фона в этом коде, потому что я хотел бы изменить разные цвета фона для каждой ячейки в DataGridView позже
Комментарии:
1.
Item
Свойство aDataGridView
возвращает aDataGridViewCell
, а не aRichTextBox
. На самом деле вам нужно получить доступ к элементу управления в ячейке, но, если вы все сделали правильно, такой элемент управления должен существовать только во время редактирования ячейки в этом столбце. Мы недостаточно знаем о вашей реализации, чтобы знать, как получить доступ к этому элементу управления, но вы должны, учитывая, что вы его туда поместили.2. Потому что это именно то, что вы делаете. Вы изменили цвет задней части ячейки, а не RichTextBox. Вы никогда не показывали, как вы добавили RichTextBox, но всякий раз, когда вы это делаете, установите для его обратного цвета тот цвет, который вы хотите.
3. Я только что обновил сообщение
Ответ №1:
Я только что решил эту проблему, используя способ, приведенный ниже:
Dim cell As New DataGridViewRichTextBoxCell
cell.setBackColor(Color.LightGreen)
Me.dgvPartTracking.Item(columnIndex, rowIndex) = cell
Me.dgvPartTracking.Item(columnIndex, rowIndex).Style.BackColor = Color.LightGreen
Me.dgvPartTracking.Item(columnIndex, rowIndex).Style.ForeColor = Color.Black
Спасибо, что ответили мне @jmcilhinney, я почерпнул идею из вашего комментария