2013-04-08 3 views
14

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

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

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

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

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

+1

Если вы вручную добавлять строки, Очистить выбор после добавления всех строк. – Akanksha

ответ

13

К сожалению, ни один из этих ответов не помог мне, но я нашел другое решение. Вместо неспособный выбора я просто скрыть этот кусок кода:

dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor; 
dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor; 

Так что, если кто-то просто хочет, чтобы скрыть выбор это сработает довольно хорошо.

Приветствия :)

+3

Не совсем решение, хотя ... – miguelmpn

12

Это работает для меня:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    dataGridView1.Rows[0].Selected = false; 
} 
+1

К сожалению, это не работает. Как я уже сказал, первая строка не выбрана, она просто подчеркнута. –

+0

Какие у вас окна? –

+0

Возможно, это связано с тем, что строка имеет фокус. Вы можете попытаться сосредоточить внимание на другом элементе управления с помощью метода focus(). –

1

Попробуйте установить DataGridView.AllowUserToAddRows = false в конструкторе после InitializeComponent().

+0

Это работает :) Единственное, что я должен рассмотреть, это написать эту строку кода в событии Shown. Когда я написал это в своем конструкторе, ничего не произошло. – FrenkyB

0

Эта работа для меня четкого отбора на DataBind

Protected Sub GridCancel_DataBinding(sender As Object, e As EventArgs) Handles GridCancel.DataBinding 
    GridCancel.SelectedIndex = -1 

End Sub 
+1

Возможно, что это работает ... Но здесь вопрос связан с Winforms 'Datagridview', а не с ASP.NET' GridView', поэтому ответ не подходит. – Chris

11

Просто поместите dataGridView1.ClearSelection(); в случае нагрузки формы.

+1

Это работает для меня. Благодарю. –

0

Вы можете вызвать 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; 
    } 
1

Вы должны попытаться поставить в Показанные случае datagridView.ClearCelection(), а также datagridView.CurrentCell=null и, например, если вы хотите, чтобы выбрать строку для удаление или изменение информация вобще if(datagridView.CurrentCell==null){ MessageBox.Show("You must select row");} это работает для меня

0

событие, чтобы установить для инвалидов выбранной строки при запуске это, и управлять FLAG, чтобы остановить ClearSelection

private void dataGridView_SelectionChanged(object sender, EventArgs e) 
{ 

    if (FLAG==true) 
    { 
     dataGridView.ClearSelection(); 
     FLAG=false; 
    } 
} 
2

Попробуйте Это может быть полезно

private void dgv_order_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) 
     { 
      dgv_order.CurrentCell.Selected = false; 
      dgv_order.ClearSelection(); 
     } 
0

Иногда, когда вы загрузите вашу форму, не закрывая программу, то первая строка может быть выделена. Но он не будет выбран, и вы получите -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 

Надежда эта помощь у ребят.

0

Если это происходит потому, что он поднял нежелательное событие 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 
    } 
} 
Смежные вопросы