c#Textbox ReadOnly属性有时可以工作,有时不起作用
我想咨询一下在Visual Studio 2015中非常不常见的东西。我一直在准备Windows窗体应用程序。在那个应用程序中,我在窗体上放置了一个文本框,并将其ReadOnly属性设置为True。然后,我开始申请。起初,由于ReadOnly属性,文本框没有接受任何字母或数字,但在一段时间后,尽管它的ReadOnly属性开始接受字母和数字。c#Textbox ReadOnly属性有时可以工作,有时不起作用
然后,我改变了一个新的文本框,但它在一段时间后又做了同样的事情。我无法理解这种困惑以及为什么我面对这样一个有趣的问题。有没有人遇到过类似的问题,我想知道你是如何解决它的。
以前从未见过这种情况,但您可以调试它的方法是向TextBox.ReadOnlyChanged事件添加处理程序。类似这样的:
public Form1()
{
InitializeComponent();
roBox.ReadOnlyChanged += roBox_ReadOnlyChanged;
}
private void roBox_ReadOnlyChanged(object sender, EventArgs e)
{
throw new Exception("who did this");
}
然后在该Exception上放置一个断点。无论何时该属性变为真,它都会断裂并将您置于该断点上。然后,您可以从调用堆栈调查哪个bug正在修改只读标志。
在代码中再次加载Form
的任何可能性。只是想着这个,因为你在InitializeComponent()
之后设置了ReadOnly
财产。重新加载Form
并再次设置property
可能会导致此问题。无论如何,这只是猜测。
感谢您对@Weissu的评论,但问题依然存在。你不会相信我有3个其他文本框,并且它们具有相同的ReadOnly属性,但是这3个文本框运行良好。另一个总是让我疯狂并接受信件。也许我应该完全改变它的名字 –
我找到了解决办法 我在运行(的Windows + R)输入%temp%,清除临时文件和一切一些time`这不是很准确后,又回到了正常,现在它的只读属性
'。添加一些步骤来重现确切的行为。 – Blacktempel
您可以围绕文本框提供代码,例如ReadOnly属性被引用的任何地方,从Designer文件中设置/创建等等。这会给我们更好的想法,以及可能发生的事情。你有任何计时器活跃,可能会改变财产等? – DiskJunky
'经过一段时间'可能你正在以编程方式更改其只读属性 –