web-dev-qa-db-ja.com

データグリッド/グリッドビューの特定の行にフォーカスを設定するにはどうすればよいですか?

Datagrid/gridviewがあります。最初はグリッドに10行を入力しています。毎回ボタンをクリックすると、datagrid/gridviewに10行を追加し続けます。ここで、グリッドにデータが入力されるたびに、フォーカスを最後の行に設定します。その行のインデックスを取得できますが、その特定の行にフォーカスを設定できません。

C#でそれを行う方法を知っている人はいますか?

7
Sukanya

これを試して

dataGridView1.ClearSelection();
int nRowIndex = dataGridView1.Rows.Count - 1;

dataGridView1.Rows[nRowIndex].Selected = true;
dataGridView1.Rows[nRowIndex].Cells[0].Selected = true;
14
Wael Dalloul

WinForms DataGridViewの場合:

myDataGridView.CurrentCell = myDataGridView.Rows[theRowIndex].Cells[0];

WebForms GridViewの場合、 SelectedIndex プロパティを使用します

myGridView.SelectedIndex = theRowIndex;
5
akoso

これを試して...

DataGridViewRow rowToSelect = this.dgvJobList.CurrentRow;

rowToSelect.Selected = true;



rowToSelect.Cells[0].Selected = true;

this.dgvJobList.CurrentCell = rowToSelect.Cells[0];

this.dgvJobList.BeginEdit(true);
1
Manoj Savalia

これを試してみてください、それは私のために働いています

   public static void ItemSetFocus(DataGrid Dg, int SelIndex)
    {
        if (Dg.Items.Count >= 1 && SelIndex < Dg.Items.Count)
        {
           Dg.ScrollIntoView(Dg.Items.GetItemAt(SelIndex));
           Dg.SelectionMode = DataGridSelectionMode.Single;
           Dg.SelectionUnit = DataGridSelectionUnit.FullRow;
           Dg.SelectedIndex = SelIndex;
           DataGridRow row = (DataGridRow)Dg.ItemContainerGenerator.ContainerFromIndex(SelIndex);
                row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }
    }
0
Marc

この投稿は神の送信です。 Visual Studio2017でVBを使用していて、ユーザーがデータを入力できるようにDATAGRIDの下部に移動する必要がありました。これらの回答を検討することで、このソリューションを思いつき、他の人が見つけるかもしれないと思いました。便利です。

Private Sub AddBUTTON_Click(sender As Object, e As RoutedEventArgs) Handles 
AddBUTTON.Click
        ' Go to bottom to allow user to add item in last row
        DataGrid.Focus()
        DataGrid.UnselectAll()
        DataGrid.SelectedIndex = 0
        DataGrid.ScrollIntoView(DataGrid.SelectedItem)
        Dim endofitems As Integer = DataGrid.Items.Count         
        DataGrid.ScrollIntoView(DataGrid.Items.GetItemAt(endofitems - 1))
    End Sub
0
Maryjane Eldred