强制用户在DataGridRow的第一个单元格中输入数据

时间:2015-05-02 08:57:00

标签: c# wpf datagrid

我有一个数据网格。在此数据网格中,以编程方式添加新行。

添加新行时,新行的第一个单元格将被聚焦。

现在,如果用户点击任何其他单元格而未在第一个单元格中输入数据,则焦点不应从第一个单元格移动。我的意思是我希望用户在第一个单元格中输入数据。如果他不想在第一个单元格中输入数据,那么他/她应该按 Enter 。如果他想从任何其他行编辑任何其他单元格,那么他应该能够做到。但当他再次进入新的行时,他应该被迫集中第一个细胞

1 个答案:

答案 0 :(得分:0)

由于您不希望焦点移动到新行中的任何其他列,因此您可以禁用该行的所有元素。

现在,只要用户按Enter键或他/她将一些文本输入到新行的第一列,就启用该行的所有元素。

例如,考虑两个TextBox。最初将禁用第二个文本框。当用户在第一个TextBox中输入或任何数据时,第二个TextBox将被启用。

XAML代码:

<TextBox Name="txtBox" Grid.Row="0" KeyDown="txtBox_KeyDown" TextChanged="txtBox_TextChanged"></TextBox>
<TextBox Name="txtBox2" Grid.Row="1" IsEnabled="False"></TextBox>

C#代码:

private void txtBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            txtBox2.IsEnabled = true;
            txtBox2.Focus();
        }
    }

    private void txtBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        if (!txtBox.Text.Equals(""))
        {
            txtBox2.IsEnabled = true;
        }
        else
        {
            txtBox2.IsEnabled = false;
        }
    }

您可以使用相同的概念来解决您的问题。