DataGridView без выбранной строки в начале
В моих WinForms у меня есть DataGridView
. Я хотел выбрать полную строку сразу, поэтому я установил SelectionMode
как FullRowSelect
. И теперь у меня проблема, потому что в начале моя форма подчеркивает первую строку (набор выбранных строк пуст, первая строка не выбрана, а только подчеркнута). Я пробовал много вещей, например:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.ClearSelection();
}
И все не удалось, потому что на самом деле выбора нет.
Как я могу избавиться от этого подчеркивания?
Спасибо за любую помощь!
Ответы
Ответ 1
К сожалению, ни один из этих ответов не помог мне, но я нашел другое решение. Вместо неспособного выбора я просто скрою его с помощью этого фрагмента кода:
dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor;
dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor;
Итак, если кто-то просто хочет скрыть выбор, он будет работать очень хорошо.
Приветствия:)
Ответ 2
Это работает для меня:
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.Rows[0].Selected = false;
}
Ответ 3
Просто введите dataGridView1.ClearSelection();
в событие загрузки формы.
Ответ 4
Попробуйте Это может быть полезно
private void dgv_order_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
dgv_order.CurrentCell.Selected = false;
dgv_order.ClearSelection();
}
Ответ 5
Попробуйте установить DataGridView.AllowUserToAddRows = false
в конструкторе после InitializeComponent()
.
Ответ 6
Вы должны попытаться включить событие Shown datagridView.ClearCelection()
, а также datagridView.CurrentCell=null
и, например, если вы хотите выбрать строку для удаления или изменения информации, просто выполните if(datagridView.CurrentCell==null){
MessageBox.Show("You must select row");}
, она работает для меня
Ответ 7
Эта работа для меня для четкого выбора в databind
Protected Sub GridCancel_DataBinding(sender As Object, e As EventArgs) Handles GridCancel.DataBinding
GridCancel.SelectedIndex = -1
End Sub
Ответ 8
Вы можете вызвать метод dataGridView.ClearSelection() внутри события form_Load, как это...
private void Form1_Load(object sender, EventArgs e)
{
// You will get selectedCells count 1 here
DataGridViewSelectedCellCollection selectedCells = dataGridView.SelectedCells;
// Call clearSelection
dataGridView.ClearSelection();
// Now You will get selectedCells count 0 here
selectedCells = dataGridViewSchedule.SelectedCells;
}
Ответ 9
Событие для установки отключенной выбранной строки при запуске - это,
и управлять FLAG, чтобы остановить ClearSelection
private void dataGridView_SelectionChanged(object sender, EventArgs e)
{
if (FLAG==true)
{
dataGridView.ClearSelection();
FLAG=false;
}
}
Ответ 10
Иногда, когда вы перезагружаете форму без закрытия вашей программы, первая строка может быть выделена. Но он не будет выбран, и вы получите -1 для выбранного индекса строки.
Вы можете сделать это так:
'1. store default styles when form is loading:
Public Class aRoots
Dim df1, df2, df3, df4 As Color
Private Sub aRoots_Load(sender As Object, e As EventArgs) Handles Me.Load
df1 = DGV_Root.DefaultCellStyle.SelectionBackColor
df2 = DGV_Root.DefaultCellStyle.BackColor
df3 = DGV_Root.DefaultCellStyle.SelectionForeColor
df4 = DGV_Root.DefaultCellStyle.ForeColor
......
'2. change cell styles when interacting with datagridview:
Private Sub LoadRoot()
For i = 0 To 5
DGV_Root.Rows.Add()
For j = 0 To 3
DGV_Root.Item(j, i).Value = ...
Next
Next
'DGV_Root.ClearSelection() ==> instead of this use 2 lines below
DGV_Root.DefaultCellStyle.SelectionBackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df4
End Sub
'3. Change cell styles to default when selection is being changed like cell_click or cell_double click:
Private Sub DGV_Root_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Root.CellMouseClick
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
...
End Sub
'4. restore all to default when u want to close form:
Private Sub PbClose_Click(sender As Object, e As EventArgs) Handles PbClose.Click
BtnCancel.PerformClick()
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.BackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
DGV_Root.DefaultCellStyle.ForeColor = df4
Me.Close()
End Sub
Надеюсь, что это поможет и парням.
Ответ 11
Если это связано с тем, что при начальной загрузке возникает нежелательное событие GridView1_SelectionChanged, вы можете использовать флаг для обработки этого
public partial class YourFormName
{
private bool IsReady= false;
private void YourFormName_Load(object sender, EventArgs e)
{
//Load your GridView1...
//Format your GridView1...
IsReady = true;
}
void GridView1_SelectionChanged(object sender, EventArgs e)
{
if (!IsReady)
return;
//do the rest of the stuffs
}
}