VB.Net Winform单选按钮的所有属性均设置为ReadOnly = True

时间:2018-07-26 16:18:18

标签: c# vb.net winforms radio-button

这是我在这里的第一个问题,请多多包涵。

我在软件中遇到了一个错误,如下所示,可以同时选择给定控件中的多个单选按钮。请注意,这是一个非常大的程序。

Multiple Radio Buttons Selected in One Control

在调试时,我发现此问题的原因是RadioButton类的“ Checked”属性上的ReadOnly属性设置为true。另外,似乎RadioButton上所有属性的ReadOnly属性都设置为True。我可以通过反射将ReadOnly属性的值更改为false来确认这是导致意外行为的原因。有趣的是,发生这种情况时,我的应用程序中的每个单选按钮都会遇到相同的问题。

我能够追踪到属性改变的时间。以另一种形式,当我将属性网格的SelectedObject设置为所有属性都更改时的对象时,便在属性网格上显示了一些对象。带有属性网格的表单和带有单选按钮的表单无论如何都不是常见的。

一段时间以来,我一直无法找到问题的根源。如果有人对如何实现有任何想法,则可以帮助我弄清楚问题在程序中的位置。

这是我的调试窗口的图片,在我为属性网格设置SelectedObject属性之前和之后,在单选按钮上显示了ReadOnly属性值

Just Before

Just After

谢谢。

编辑1:

这是设置属性网格的代码。第179行。在调试时,需要在不同的选项卡中显示3个不同的子属性对象。第一个没有问题。第二个。

Property Grid Code

编辑2:

解决方案

感谢所有发表评论的人。实际上,我可以在以下线程的帮助下找到解决问题的方法。

Setting ReadOnly Property in PropertyGrid

基本上,我的代码中存在一个地方,我将对象中所有属性的ReadOnly状态设置为True。如果没有特殊的定义,似乎所有对象之间都会共享某种通用的“ ReadOnly”属性。

我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再设置它的值。

Original Solution

但是对于这样定义的属性,它返回True

Non ReadOnly Property

但对于此类属性,则为False

ReadOnly Property

我的猜测再次是,发现了某种继承属性。

因此,我的解决方案是检查以下功能。

Final Solution

将此检查放到我的SetReadOnly()函数中解决了我的问题。

1 个答案:

答案 0 :(得分:0)

解决方案

感谢所有发表评论的人。实际上,我可以在以下线程的帮助下找到解决问题的方法。

Setting ReadOnly Property in PropertyGrid

基本上,我的代码中存在一个地方,我将对象中所有属性的ReadOnly状态设置为True。如果没有特殊的定义,似乎所有对象之间都会共享某种通用的“ ReadOnly”属性。

我最初的解决方案是先检查ReadOnlyAttribute是否存在,然后再设置它的值。

Original Solution

但是对于这样定义的属性,它返回True

Non ReadOnly Property

但对于此类属性,则为False

ReadOnly Property

我的猜测再次是,发现了某种继承属性。

因此,我的解决方案是检查以下功能。

Final Solution

将此检查放到我的SetReadOnly()函数中解决了我的问题。