2011-11-22 79 views
0

我有2个网格。当用户在一个网格中进行编辑时,我想禁用另一个网格获取焦点,或者至少其他网格更改其焦点行。如何防止gridview获得焦点?

示例: 父网格,子网格。

如果用户正在编辑特定父级的孩子。我想阻止用户突然将焦点转移到不同的父行。怎么做 ?

+1

您是否尝试将您的父级Gridview设置为Enabled = false?这应该防止控制获得重点。 – Alex

+0

我正在使用DevExpress.XtraGrid.Views.Grid其实我尝试使用Enabled,它工作正常,唯一的问题是,它变得太灰显可见。我可以在不更改视觉属性的情况下禁用,以便用户不会感觉任何更改 –

回答

1

您可以防止接收焦点的控件的唯一方法是更改​​它的启用或可见属性。

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

+0

我正在使用DevExpress.XtraGrid.Views.Grid其实我尝试使用Enabled并且它工作正常,只是问题是它变得太灰色以至于看不到。我可以在不更改视觉属性的情况下禁用,以便用户不会感觉任何更改。 –

+0

我对这个控件并不是很熟悉。但是,残疾人控制的颜色变化是人们之前抱怨的。 我听到的唯一解决方案是手动更改BackgroundColor。 它看起来像这个Gridview可能有更多的选择...你看过http://documentation.devexpress.com/#WindowsForms/CustomDocument755吗? –

0

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

创建一个属性调用模式,然后使用枚举来设置它编辑或无等

假设你有GridViewParent和GridViewChild。在子网格的FocusedRow事件中,在所有代码的开始处,将模式的值设置为“编辑”,并在事件的所有代码的末尾将其设置为“无”。

然后在父网格的FocusedRow事件中检查模式值是否被编辑,如果是编辑,那么使用e.Cancel或其他来获取父级的焦点事件。

现在,如果你让我知道你究竟使用哪个网格,我可能会向你发送代码。

+0

我正在使用DevExpress.XtraGrid.Views.Grid其实我尝试使用Enabled,它工作正常,唯一的问题是,它变得太灰显可见。我可以在不更改视觉属性的情况下禁用,以便用户不会感觉任何更改。 –