Я хочу использовать мой DataGridView
только для того, чтобы показать вещи, и я хочу, чтобы пользователь не мог выбирать любую строку, поле или что-либо из DataGridView
.Как отключить возможность выбора в DataGridView?
Как это сделать?
Я хочу использовать мой DataGridView
только для того, чтобы показать вещи, и я хочу, чтобы пользователь не мог выбирать любую строку, поле или что-либо из DataGridView
.Как отключить возможность выбора в DataGridView?
Как это сделать?
Используйте DataGridView.ReadOnly
property
Код в MSDN example иллюстрирует использование этого свойства в DataGridView
управления предназначенного главным образом для отображения. В этом примере внешний вид элемента управления настраивается несколькими способами, и элемент управления сконфигурирован для ограниченной интерактивности.
Соблюдайте эти параметры в примере кода:
// Set property values appropriate for read-only
// display and limited interactivity
dataGridView1.AllowUserToAddRows = false;
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.AllowUserToOrderColumns = true;
dataGridView1.ReadOnly = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView1.MultiSelect = false;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
dataGridView1.AllowUserToResizeColumns = false;
dataGridView1.ColumnHeadersHeightSizeMode =
DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
dataGridView1.AllowUserToResizeRows = false;
dataGridView1.RowHeadersWidthSizeMode =
DataGridViewRowHeadersWidthSizeMode.DisableResizing;
Если бы я мог голосовать, я бы это сделал. Пока нет репутации. Однако readonly ничего не делает для предотвращения выбора пользователем ячейки. – JSON
@ JSON - Не против голова вверх или вниз. Было бы здорово иметь решение вместо того, где сообщество может учиться. –
Я установил это, устанавливая Enabled
свойство false
.
Я бы с этим:
private void myDataGridView_SelectionChanged(Object sender, EventArgs e)
{
dgvSomeDataGridView.ClearSelection();
}
Я не согласен с широким утверждением, что ни DataGridView
не должно быть неактивна. Некоторые пользовательские интерфейсы создаются для инструментов или сенсорных экранов, и выбор позволяет вводить пользователя в заблуждение, чтобы думать, что выбор фактически приведет их куда-нибудь.
Установка ReadOnly = true
на элемент управления не влияет на выбор ячейки или строки. И есть визуальные и функциональные недостатки для установки Enabled = false
.
Еще один вариант - установить выбранные цвета в качестве именно того, что выбраны не выбранными цветами, но если вы манипулируете обратным цветом ячейки, то этот метод также дает некоторые неприятные результаты.
Вопрос «Как мне изменить цвет фона выбранной группы данных?» описывает, как установить цвет фона и переднего плана для выбранной строки: Question
Это работало достаточно хорошо для меня. –
user1036944
Хм .. Мне интересно, отредактированы ли все ответы на код VB.NET на C# .... – edhubbell
Это лучше :) –
Я нашел настройки всех AllowUser...
свойства false
, ReadOnly
к true
, RowHeadersVisible
на false
, ScollBars
к None
, то faking the prevention of selection работал лучше для меня. Не устанавливая Enabled
на false
, он позволяет пользователю копировать данные из сетки.
Следующий код также очищает внешний вид, когда вы хотите простую сетку дисплея (предполагающие строки имеют одинаковую высоту):
int width = 0;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
width += dataGridView1.Columns[i].Width;
}
dataGridView1.Width = width;
dataGridView1.Height = dataGridView1.Rows[0].Height*(dataGridView1.Rows.Count+1);
Вы можете установить прозрачный цвет фона для выбранных ячеек следующим образом:
DataGridView.RowsDefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent;
Это работает для меня как шарм:
row.DataGridView.Enabled = false;
row.DefaultCellStyle.BackColor = Color.LightGray;
row.DefaultCellStyle.ForeColor = Color.DarkGray;
(где строка = DataGridView.NewRow (соответствующие перегрузки);)
Enabled
недвижимость в false
или
this.dataGridView1.DefaultCellStyle.SelectionBackColor = this.dataGridView1.DefaultCellStyle.BackColor;
this.dataGridView1.DefaultCellStyle.SelectionForeColor = this.dataGridView1.DefaultCellStyle.ForeColor;
Не будучи в состоянии выбрать действительно плохой дизайн пользовательского интерфейса (очень раздражает пользователя). Что делать, если пользователь хочет что-то скопировать из вашего отчета? Я думаю, что для чтения достаточно (как описано в ответах ниже). – banging