5

我如何配置 datagridview 以便用户只能在行中移动并使用滚动,没有别的...如果我禁用网格不允许我使用滚动

4

4 回答 4

5

将您的 datagridview 设置为只读,这将禁用任何编辑。

dataGridView1.ReadOnly = true;

在您的处理程序中,执行以下操作:

void dataGridView1_DoubleClick(object sender, EventArgs e)
{
     if (dataGridView1.ReadOnly == true)
          return;

     // .. whatever code you have in your handler...
}

即使用户双击网格,也不会发生任何事情。

于 2012-10-05T17:29:11.320 回答
1

正如OP评论中所讨论的:

dataGridView.ReadOnly = true;

在您正在处理的任何 DataGridView 事件中,检查 ReadOnly 属性,如果为 true,则不要在事件中执行任何操作。

我查看了遍历行和列并禁用它们中的每一个的另一个选项,但 Enabled 不是行或列对象的属性。无论如何,遍历大量项目会很慢。

于 2012-10-05T17:16:17.643 回答
1

T. Fabre 的回答对我不起作用。就我而言,我的数据网格的每一行都有按钮和可编辑的复选框,因此即使 DataGrid 处于只读状态,它们也不会被停用。但是,对我有用的(不禁用滚动)是禁用每一行,如下例所示:

<Style TargetType="{x:Type DataGridRow}" x:Key="MyDataGridRowStyle">
    <Style.Setters>
        <Setter Property="IsEnabled" Value="False"/>
    </Style.Setters>
</Style>

然后在 DataGrid 中:

<DataGrid ... RowStyle="{StaticResource MyDataGridRowStyle}">

希望有所帮助(抱歉,如果只发布了 XAML 解决方案)!

于 2016-11-09T16:17:40.987 回答
0

对我来说最好的解决方案是禁用除滚动和调整单元格大小之外的所有内容(恕我直言,这最适合“只读表格”):

// disable editing
this.dgTabOptions.ReadOnly = true;

// disable selection        
private void myGrid_SelectionChanged(object sender, EventArgs e)
{
    dgTabOptions.ClearSelection();
}

//disable sorting
private void dgTabOptions_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    e.Column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
于 2020-11-20T16:02:54.657 回答