Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何防止gridview获得焦点?_C#_Winforms_Devexpress - Fatal编程技术网

C# 如何防止gridview获得焦点?

C# 如何防止gridview获得焦点?,c#,winforms,devexpress,C#,Winforms,Devexpress,我有两个网格。当用户在一个网格中进行编辑时,我想禁用另一个网格获取焦点,或者至少禁用另一个网格更改其焦点行 例如: 父网格,子网格 如果用户正在对特定父项的子项进行编辑。我想防止用户突然将焦点转移到不同的父行。如何做到这一点?防止控件接收焦点的唯一方法是更改其已启用或可见的属性 只需将父级的Enabled属性更改为“false”(例如,对于CellBeginEdit),然后再更改回“true”(例如,在CellEndEdit事件中),即可防止用户选择新的父级行。有很多方法可以做到这一点,但我会这

我有两个网格。当用户在一个网格中进行编辑时,我想禁用另一个网格获取焦点,或者至少禁用另一个网格更改其焦点行

例如: 父网格,子网格


如果用户正在对特定父项的子项进行编辑。我想防止用户突然将焦点转移到不同的父行。如何做到这一点?

防止控件接收焦点的唯一方法是更改其已启用或可见的属性


只需将父级的Enabled属性更改为“false”(例如,对于CellBeginEdit),然后再更改回“true”(例如,在CellEndEdit事件中),即可防止用户选择新的父级行。

有很多方法可以做到这一点,但我会这样做(只是一个概念,如果任何属性不匹配,请忽略):

创建一个名为mode的属性,然后使用枚举将其设置为Edit或None等

假设您有GridViewParent和GridViewChild。在子网格的FocusedRow事件中,在所有代码的开头,将mode的值设置为Edit,在事件中所有代码的结尾,将其设置为None

然后,在父网格的FocusedRow事件中,检查模式值是否为edit(编辑),如果为edit(编辑),则使用e.Cancel(取消)或其他方法退出父网格的聚焦事件


现在,如果您确切地告诉我您使用的网格,我可能会将代码发送给您。

您是否尝试将父Gridview设置为Enabled=false?这应该会阻止控件获得焦点。我正在使用DevExpress.XtraGrid.Views.Grid,实际上我尝试启用了它,它工作正常,唯一的问题是它变灰太多,无法查看。我在使用DevExpress.XtraGrid.Views.Grid时,是否可以在不更改视觉属性的情况下禁用它,这样用户就不会感觉到任何变化?事实上,我尝试启用了DevExpress.XtraGrid.Views.Grid,但效果很好,唯一的问题是它变得太灰,无法查看。我可以在不更改视觉属性的情况下禁用它,这样用户就不会感觉到任何更改。我使用的是DevExpress.XtraGrid.Views.Grid,实际上我尝试过启用它,但效果很好,唯一的问题是它变灰太多,无法查看。我可以在不改变视觉属性的情况下禁用它,这样用户就不会感觉到任何变化。我对这个控件不是很熟悉。但是,人们以前抱怨过禁用控件的颜色变化。我听到的唯一解决办法是手动更改背景颜色。看起来这个Gridview可能有更多的选项。。。你看过吗?