【问题标题】:VB.Net Winform Radiobutton has all attributes on properties set to ReadOnly = TrueVB.Net Winform Radiobutton 的所有属性都设置为 ReadOnly = True
【发布时间】:2018-07-27 04:07:39
【问题描述】:

这是我在这里的第一个问题,请耐心等待。

我在我的软件中遇到了一个错误,即给定控件中的多个单选按钮都能够同时被选中,如此处所示。请注意,这是一个非常大的程序。

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

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

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

Original Solution

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

Non ReadOnly Property

但是对于这样的属性是 False

ReadOnly Property

我再次猜测是找到了某种继承属性。

因此,我的解决方案是使用以下函数进行检查。

Final Solution

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

【问题讨论】:

  • 这些控件是在设计时还是运行时添加的?你能显示一些代码吗?
  • 控件全部添加到设计器中。有些地方确实调整了我的一些类的 ReadOnly 属性以在属性网格中显示;但是,据我所知,没有一个被调用。我确实调用了一些调整可浏览属性的代码;但是,即使我对此发表评论,它仍然会发生。
  • 向问题添加代码
  • 另外我刚刚意识到选项卡控件是由设计器放置的,没有选项卡页,但选项卡页和属性网格是在运行时添加的
  • 是否涉及任何数据绑定? TabPages 是许多意外行为的来源。请参阅:https://stackoverflow.com/a/50119854/2592875

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


【解决方案1】:

解决方案

感谢所有评论的人。在以下线程的帮助下,我实际上能够找出问题的解决方案。

Setting ReadOnly Property in PropertyGrid

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

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

Original Solution

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

Non ReadOnly Property

但是对于这样的属性是 False

ReadOnly Property

我再次猜测是找到了某种继承属性。

因此,我的解决方案是使用以下函数进行检查。

Final Solution

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    相关资源
    最近更新 更多