20

私のWinFormsにはDataGridView. 行全体を一度に選択したかったので、 に設定SelectionModeしましFullRowSelectた。私のフォームは最初の行に下線が引かれているため、問題が発生しています(選択された行のセットは空で、最初の行は選択されておらず、下線が引かれているだけです)。次のような多くのことを試しました。

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

実際には選択がないため、すべてが失敗しました。

この下線を取り除くにはどうすればよいですか?

助けてくれてありがとう!

4

13 に答える 13

20

dataGridView1.ClearSelection();フォームのloadイベントを入れるだけです。

于 2014-10-09T15:32:48.003 に答える
17

これは私のために働く:

private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    dataGridView1.Rows[0].Selected = false;
}
于 2013-04-08T13:45:04.187 に答える
15

残念ながら、これらの回答はどれも役に立ちませんでしたが、他の解決策を見つけました。選択できない代わりに、次のコードで非表示にします。

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

したがって、誰かが単に選択を非表示にしたい場合は、かなりうまく機能します。

乾杯 :)

于 2013-04-10T13:12:29.020 に答える
2

Shown イベントを入れてみてください。datagridView.ClearCelection()またdatagridView.CurrentCell=null、たとえば、情報を削除または変更するために行を選択したい場合は、それでうまくいきif(datagridView.CurrentCell==null){ MessageBox.Show("You must select row");}ます。

于 2016-08-04T12:11:37.590 に答える
0

プログラムを閉じずにフォームをリロードすると、最初の行が強調表示されることがあります。ただし、選択されず、選択された行インデックスに対して-1が返されます。

次のように実行できます。

 1. フォームの読み込み時にデフォルト スタイルを保存します。

 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. 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. cell_click や 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.フォームを閉じたい場合は、すべてをデフォルトに戻します。

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

これが皆さんのお役に立てば幸いです。

于 2016-12-29T10:42:58.367 に答える
0

これは、データバインドの明確な選択のために機能します

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

End Sub
于 2013-09-07T10:36:04.113 に答える
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
    }
}
于 2017-04-26T15:48:17.377 に答える