这是我在这里的第一个问题,请耐心等待。
我在我的软件中遇到了一个错误,一个给定控件中的多个单选按钮都可以同时选择,如图所示。请注意,这是一个非常大的程序。
在一个控制中选择多个单选按钮
在调试时,我发现这种行为的原因是RadioButton类的"Checked"属性上的ReadOnly属性设置为true。此外,似乎RadioButton上所有属性的ReadOnly属性都设置为True。我通过反射将ReadOnly属性的值改回false,确认了这是导致意外行为的原因。有趣的是,当这种情况发生时,我的应用程序中的每个单选按钮都会遇到同样的问题。
我能够追踪到属性在什么时候发生了变化。在另一种形式中,我在属性网格上显示一些对象,当我将该属性网格的SelectedObject设置为对象时,所有属性都会发生变化。带有属性网格的窗体和带有单选按钮的窗体在中都不常见。
一段时间以来,我一直无法找到这个问题的根源。如果有人对如何实现这一点有任何想法,可能会帮助我找出问题所在。
以下是调试窗口的图片,显示了在为属性网格设置SelectedObject属性之前和之后单选按钮上的ReadOnly属性值
之前
之后
谢谢。
编辑1:
这是设置属性网格的代码。第179行。调试时,有3个不同的子属性对象需要显示在不同的选项卡中。第一种不会引起任何问题。第二个是。
房地产网格代码
编辑2:
解决方案
感谢所有发表评论的人。事实上,在以下线程的帮助下,我能够找到问题的解决方案。
在PropertyGrid 中设置ReadOnly属性
基本上,在我的代码中有一个地方,我将对象中所有属性的ReadOnly状态设置为True。似乎有某种通用的"ReadOnly"属性在所有对象之间共享,如果它们没有特殊的定义的话。
我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再这样设置它的值
原始溶液
然而,对于像这样定义的属性,这返回True
非只读属性
但对于像这样的属性为False
只读属性
我再次猜测,有某种inherit属性被找到了。
因此,我的解决方案是使用以下函数进行检查。
最终解决方案
把这个检查放在我的SetReadOnly((函数中解决了我的问题。
解决方案
感谢所有发表评论的人。事实上,在以下线程的帮助下,我能够找到问题的解决方案。
在PropertyGrid 中设置ReadOnly属性
基本上,在我的代码中有一个地方,我将对象中所有属性的ReadOnly状态设置为True。似乎有某种通用的"ReadOnly"属性在所有对象之间共享,如果它们没有特殊的定义的话。
我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再这样设置它的值
原始溶液
然而,对于像这样定义的属性,这返回True
非只读属性
但对于像这样的属性为False
只读属性
我再次猜测,有某种inherit属性被找到了。
因此,我的解决方案是使用以下函数进行检查。
最终解决方案
把这个检查放在我的SetReadOnly((函数中解决了我的问题。