DataGridView без выбранной строки в начале - программирование
Подтвердить что ты не робот

DataGridView без выбранной строки в начале

В моих WinForms у меня есть DataGridView. Я хотел выбрать полную строку сразу, поэтому я установил SelectionMode как FullRowSelect. И теперь у меня проблема, потому что в начале моя форма подчеркивает первую строку (набор выбранных строк пуст, первая строка не выбрана, а только подчеркнута). Я пробовал много вещей, например:

    private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
    {
        dataGridView1.ClearSelection();
    }

И все не удалось, потому что на самом деле выбора нет.

Как я могу избавиться от этого подчеркивания?

Спасибо за любую помощь!

4b9b3361

Ответ 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
    }
}