【问题标题】:c# Textbox ReadOnly Property sometimes work, sometimes does not workc# Textbox ReadOnly 属性有时有效,有时无效
【发布时间】:2017-09-14 11:20:58
【问题描述】:

我想向您咨询一些在 Visual Studio 2015 中非常罕见的东西。我一直在准备一个 Windows 窗体应用程序。在那个应用程序中,我在表单上放置了一个文本框,并将其 ReadOnly 属性设置为 True。然后,我启动了应用程序。起初,由于 ReadOnly 属性,textbox 不接受任何字母或数字,但过了一段时间,尽管它具有 ReadOnly 属性,它开始接受字母和数字。

然后,我用一个新的文本框更改了文本框,但一段时间后它又做了同样的事情。我无法理解这种情况以及为什么我会遇到如此有趣的问题。有没有人遇到过类似的问题,我想知道你是怎么解决的。

【问题讨论】:

  • after some time 这不是很准确。添加一些步骤来重现确切的行为。
  • 您能否提供文本框周围的代码,例如,在任何地方引用 ReadOnly 属性、从 Designer 文件中设置/创建等?这将使我们更好地了解那里有什么以及可能发生的事情。您是否有任何活动的计时器可能会更改属性等?
  • after some time 可能是您正在以编程方式更改其只读属性
  • 在您的代码库中搜索 ReadOnly 并检查是否有代码在运行时更改了该属性。
  • @mjwills 我在代码中到处检查,但没有用。当我添加一个新的文本框时,它工作得很好,但是这个对 ReadOnly 属性不起作用。顺便说一句,如果我删除文本框并添加另一个具有相同名称的文本,问题仍然存在。我无法理解这个问题。我会在最后一次机会更新我的 VS

标签: c# properties textbox readonly


【解决方案1】:

以前从未见过这种情况,但您可以对其进行调试,即为 TextBox.ReadOnlyChanged 事件添加一个处理程序。像这样的:

public Form1()
{
    InitializeComponent();
    roBox.ReadOnlyChanged += roBox_ReadOnlyChanged;
}

private void roBox_ReadOnlyChanged(object sender, EventArgs e)
{
    throw new Exception("who did this");
}

然后在那个异常上放一个断点。每当该属性更改为 true 时,它​​就会中断并将您置于该断点上。然后你可以从调用堆栈中调查,哪个臭虫正在修改只读标志。

【讨论】:

    【解决方案2】:

    您可以在代码中再次加载Form。之所以这么想是因为您在InitializeComponent() 之后设置了ReadOnly 属性。重新加载Form 并再次设置property 可能会导致问题。无论如何,这只是猜测。

    【讨论】:

    • 感谢您的评论@Weissu,但问题仍然存在。您不会相信我还有 3 个其他文本框并且它们具有相同的 ReadOnly 属性,但是这 3 个文本框工作得很好。另一个总是让我发疯并接受信件。也许我应该彻底改名
    【解决方案3】:

    我找到了解决方案 我通过在 Run (Windows+R) 中键入 %temp% 清除了临时文件,一切都恢复正常,现在它的 ReadOnly 属性

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2012-08-02
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多