c#winform 中 引发了“System.InvalidOperationException”类型的异常

无数据库操作,从网上down的一个程序,运行时出现这个错误privatevoidBlinkCaretTimer_Elapsed(objectsender,ElapsedE... 无数据库操作,从网上down的一个程序,运行时出现这个错误

private void BlinkCaretTimer_Elapsed(object sender, ElapsedEventArgs e)
{
//如果选择文本,我们不想要光标显示
//(From SHIFT+<-OR->)
if (!SelectingText && this.SelectionLength > 0)
{
SelectingText = true;
DrawCaret = false;
UpdateRegion();
}//if
else
if (!SelectingText)
{
DrawCaret = !DrawCaret;
DrawCaretToBitmap();
}//else
}//BlinkcaretTimer Elapsed
在if中的this.SelectionLength > 0处异常:
this.SelectionLength = “this.SelectionLength”引发了“System.InvalidOperationException”类型的异常
展开
 我来答
apu510064
推荐于2016-02-05 · TA获得超过964个赞
知道小有建树答主
回答量:1634
采纳率:55%
帮助的人:912万
展开全部
程序不完整,if (!SelectingText && this.SelectionLength > 0)中的this是什么东西?应该是自定义的控件吧,SelectionLength应该是用户定义的属性,你跟踪一下,我怀疑在这一句代码中SelectionLength的值为null,所以引发了异常。解决办法,检查SelectionLength赋值的地方,保证在这一句代码前赋值,或者为SelectionLength属性设置默认值为0
更多追问追答
追问
是的是的,是一个自定义控件,是重写RichTextbox的一个控件。
我在它的上面写了this.SelectionLength=0;它还是这个错
this.SelectionLength = “this.SelectionLength”引发了“System.InvalidOperationException”类型的异常。
base {System.SystemException} = {"线程间操作无效: 从不是创建控件“”的线程访问它。"}
追答
估计控件会有一句这样的代码,我不区分大小写了:
private int _selecttionLength;你把这一句修改为private int _selecttionLength=0;这样应该不会引发异常,不过可能达不到程序原来要实现的效果。如果牵涉到多线程,你找一下线程间通信的文章看一下
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式