我有以下一行:
if ( dataGridView1.Rows[i].Cells[0].Value.ToString().Length >= 13 ){
e.Graphics.DrawString
(dataGridView1.Rows[i].Cells[0].Value.ToString().Substring(0,14),
print6B, Brushes.Black, x-10, 130 + height);
}
else {
由于Substring方法,我收到此错误: index和length必须引用字符串c#
中的位置获取字符串前14个字符的最佳方法是什么?
答案 0 :(得分:3)
如果 14个字符,那将正常工作,但如果少于14个字符则不会。您可以编写自己的扩展方法:
public string SafeSubstring(this string text, int index, int count)
{
// TODO: null checking
return text.Length > index + count ? text.Substring(index, count)
: text.Substring(index);
}
请注意,这只会帮助您避免因计算而导致的异常 - 您仍需要确保index
合适。
答案 1 :(得分:2)
首先检查字符串的长度 - 如果小于14个字符则返回整个字符串,否则返回SubString(0,14)。
答案 2 :(得分:2)
对我来说很好看。你确定你没有抓住标题行吗?处理gridview时这是一个常见的错误。
if (dataGridView1.Rows[i].RowType == DataControlRowType.DataRow)
{
if (dataGridView1.Rows[i].Cells[0].Value.ToString().Length > 13)
{
e.Graphics.DrawString(dataGridView1.Rows[i].Cells[0].Value.ToString().Substring(0,14), print6B, Brushes.Black, x-10, 130 + height);
}
}
您可以在行类型here
上查看更多内容答案 3 :(得分:0)
string strToWrite = string.Empty;
if(dataGridView1.Rows[i].Cells[0].Value.Length > 14){
strToWrite = dataGridView1.Rows[i].Cells[0].Value.ToString().Substring(0,14);
else
strToWrite = dataGridView1.Rows[i].Cells[0].Value;
e.Graphics.DrawString(strToWrite, print6B, Brushes.Black, x-10, 130 + height);