这个错误怎么解决 "索引和长度必须引用该字符串内的位置"
if (xbs.Length >58){
int a = 58;
int b = 25;
for (int i = 0; i <= 1000; i++)
{
g.DrawString(xbs.Substring(a * i, a * (i + 1)), new Font("宋体", 10), Brushes.Black, fher + 80, fvar + 150 + (b * i), new StringFormat());
}
}
else
{
g.DrawString(xbs, new Font("宋体", 10), Brushes.Black, fher + 80, fvar + 150, new StringFormat());
} --------------------编程问答-------------------- xbs.Substring(a * i, a * (i + 1))
----------------------------------
按照循环的次数和循环变量i的取值,这个超出了字符串的长度范围了。 --------------------编程问答-------------------- i有必要取到1000么? --------------------编程问答-------------------- 我把i改了也是这样啊 --------------------编程问答--------------------
if (xbs.Length > 58)
{
MessageBox.Show(xbs.Length.ToString());
int a = 58;
int b = 25;
for (int i = 0; i <= 1000; i++)
{
g.DrawString(xbs.Substring(a * i, a * (i + 1)), new Font("宋体", 10), Brushes.Black, fher + 80, fvar + 150 + (b * i), new StringFormat());
}
}
else
{
g.DrawString(xbs, new Font("宋体", 10), Brushes.Black, fher + 80, fvar + 150, new StringFormat());
}
把你的代码加上上面那句,你看看你xbs的长度是不是大于1000了 --------------------编程问答-------------------- MessageBox.Show(xbs.Length.ToString()); --------------------编程问答-------------------- 没有啊
是200 --------------------编程问答--------------------
--------------------编程问答--------------------
if(a*i+a*(i+1)<=xbs.Length)
g.DrawString(xbs.Substring(a * i, a * (i + 1)), new Font("宋体", 10), Brushes.Black, fher + 80, fvar + 150 + (b * i), new StringFormat());
字符串长度只有200
你却
g.DrawString(xbs.Substring(a * i, a * (i + 1)),
取到1000之内的字符串.
--------------------编程问答--------------------
--------------------编程问答-------------------- 因为那个字符串的长度没有固定的
当i=0时
xbs.Substring(a * i, a * (i + 1)) 为xbs.Substring(0,58);
当i=1000时
xbs.Substring(a * i, a * (i + 1)) 为xbs.Substring(58000,580058);
你的xbs有这么长的么
到时候就是一个参数
补充:.NET技术 , C#