这是我在这里的第一个问题,请多多包涵。
我在软件中遇到了一个错误,如下所示,可以同时选择给定控件中的多个单选按钮。请注意,这是一个非常大的程序。
Multiple Radio Buttons Selected in One Control
在调试时,我发现此问题的原因是RadioButton类的“ Checked”属性上的ReadOnly属性设置为true。另外,似乎RadioButton上所有属性的ReadOnly属性都设置为True。我可以通过反射将ReadOnly属性的值更改为false来确认这是导致意外行为的原因。有趣的是,发生这种情况时,我的应用程序中的每个单选按钮都会遇到相同的问题。
我能够追踪到属性改变的时间。以另一种形式,当我将属性网格的SelectedObject设置为所有属性都更改时的对象时,便在属性网格上显示了一些对象。带有属性网格的表单和带有单选按钮的表单无论如何都不是常见的。
一段时间以来,我一直无法找到问题的根源。如果有人对如何实现有任何想法,则可以帮助我弄清楚问题在程序中的位置。
这是我的调试窗口的图片,在我为属性网格设置SelectedObject属性之前和之后,在单选按钮上显示了ReadOnly属性值
谢谢。
编辑1:
这是设置属性网格的代码。第179行。在调试时,需要在不同的选项卡中显示3个不同的子属性对象。第一个没有问题。第二个。
编辑2:
解决方案
感谢所有发表评论的人。实际上,我可以在以下线程的帮助下找到解决问题的方法。
Setting ReadOnly Property in PropertyGrid
基本上,我的代码中存在一个地方,我将对象中所有属性的ReadOnly状态设置为True。如果没有特殊的定义,似乎所有对象之间都会共享某种通用的“ ReadOnly”属性。
我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再设置它的值。
但是对于这样定义的属性,它返回True
但对于此类属性,则为False
我的猜测再次是,发现了某种继承属性。
因此,我的解决方案是检查以下功能。
将此检查放到我的SetReadOnly()函数中解决了我的问题。
答案 0 :(得分:0)
解决方案
感谢所有发表评论的人。实际上,我可以在以下线程的帮助下找到解决问题的方法。
Setting ReadOnly Property in PropertyGrid
基本上,我的代码中存在一个地方,我将对象中所有属性的ReadOnly状态设置为True。如果没有特殊的定义,似乎所有对象之间都会共享某种通用的“ ReadOnly”属性。
我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再设置它的值。
但是对于这样定义的属性,它返回True
但对于此类属性,则为False
我的猜测再次是,发现了某种继承属性。
因此,我的解决方案是检查以下功能。
将此检查放到我的SetReadOnly()函数中解决了我的问题。