不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii  用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
  RichTextBox.Find遍历搜索字符串中的坑
编辑:dnawo 日期:2014-12-24
					  RichTextBox.Find遍历搜索字符串有两个重载方法可供调用:
经测试发现:在特定场合下这两个重载方法可能发生死循环,下面分别举栗说明。
例1:Find(string str, int start, RichTextBoxFinds options)重载
当richTextBox1.Text="木子屋"时,即搜索的字符串在最后一位时会发生死循环,MSDN没有说明start参数值等于RichTextBox.Text.Length时(大于会出错)会从头开始搜索。
例2:public int Find(string str, int start, int end, RichTextBoxFinds options)重载
当richTextBox1.Text="木屋子"时,即搜索的字符串在倒数第二位时会发生死循环,这在MSDN有相关说明:
 引用内容
 引用内容
若将end参数值改为-1,则又会出现例1的情况。
目前的解决方法是在循环内部加判断,出现上面栗子的情况时退出循环:
相关链接
[1].RichTextBox.Find 方法 (String, Int32, RichTextBoxFinds):http://msdn.microsoft.com/zh-cn/library/9be0980x(v=vs.100).aspx
[2].RichTextBox.Find 方法 (String, Int32, Int32, RichTextBoxFinds):http://msdn.microsoft.com/zh-cn/library/yab8wkhy(v=vs.100).aspx
					   
					   
					   复制内容到剪贴板 程序代码
 程序代码
 程序代码
 程序代码public int Find(string str, int start, RichTextBoxFinds options);
public int Find(string str, int start, int end, RichTextBoxFinds options);
public int Find(string str, int start, int end, RichTextBoxFinds options);
经测试发现:在特定场合下这两个重载方法可能发生死循环,下面分别举栗说明。
例1:Find(string str, int start, RichTextBoxFinds options)重载
复制内容到剪贴板 程序代码
 程序代码
 程序代码
 程序代码int index = -1;
while ((index = richTextBox1.Find("屋", index + 1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
}
while ((index = richTextBox1.Find("屋", index + 1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
}
当richTextBox1.Text="木子屋"时,即搜索的字符串在最后一位时会发生死循环,MSDN没有说明start参数值等于RichTextBox.Text.Length时(大于会出错)会从头开始搜索。
例2:public int Find(string str, int start, int end, RichTextBoxFinds options)重载
复制内容到剪贴板 程序代码
 程序代码
 程序代码
 程序代码int index = -1;
while ((index = richTextBox1.Find("屋", index + 1, richTextBox1.Text.Length-1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
}
while ((index = richTextBox1.Find("屋", index + 1, richTextBox1.Text.Length-1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
}
当richTextBox1.Text="木屋子"时,即搜索的字符串在倒数第二位时会发生死循环,这在MSDN有相关说明:
 引用内容
 引用内容当给 start 和 end 参数提供相同的值时,就会搜索整个控件(正常搜索)。 
若将end参数值改为-1,则又会出现例1的情况。
目前的解决方法是在循环内部加判断,出现上面栗子的情况时退出循环:
复制内容到剪贴板 程序代码
 程序代码
 程序代码
 程序代码int index = -1;
while ((index = richTextBox1.Find("屋", index + 1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
if (index + 1 == richTextBox1.Text.Length)
{
break;
}
}
while ((index = richTextBox1.Find("屋", index + 1, RichTextBoxFinds.MatchCase)) != -1)
{
MessageBox.Show(index.ToString());
if (index + 1 == richTextBox1.Text.Length)
{
break;
}
}
相关链接
[1].RichTextBox.Find 方法 (String, Int32, RichTextBoxFinds):http://msdn.microsoft.com/zh-cn/library/9be0980x(v=vs.100).aspx
[2].RichTextBox.Find 方法 (String, Int32, Int32, RichTextBoxFinds):http://msdn.microsoft.com/zh-cn/library/yab8wkhy(v=vs.100).aspx
 上一篇: PJBlog3 V3.2.9.518可恶意注册BUG解决方法
上一篇: PJBlog3 V3.2.9.518可恶意注册BUG解决方法 下一篇: 表达式树ExpressionTree[转]
下一篇: 表达式树ExpressionTree[转] 文章来自: 本站原创
文章来自: 本站原创 引用通告: 查看所有引用 | 我要引用此文章
引用通告: 查看所有引用 | 我要引用此文章 Tags:
Tags:  最新日志:
最新日志:
						 
						 
					   评论: 0 | 引用: 0 | 查看次数: 5613
					   
发表评论
请登录后再发表评论!
 
 

 
  
						    
						  
















