加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在文本框中选择一个特定的行?

发布时间:2020-12-15 18:35:53 所属栏目:百科 来源:网络整理
导读:我有两个表单,1和2. Form1有一个文本框,form2有一个文本框和按钮.我想转到指定的行,这意味着当我输入form2的文本框的值时,我的鼠标光标将转到form1的文本框. private void button1_Click(object sender,EventArgs e){ int line = Form1.ab; for (int i = 1;
我有两个表单,1和2. Form1有一个文本框,form2有一个文本框和按钮.我想转到指定的行,这意味着当我输入form2的文本框的值时,我的鼠标光标将转到form1的文本框.
private void button1_Click(object sender,EventArgs e)
{
  int line = Form1.ab;
  for (int i = 1; i < line; i++)
  {
      if (i == Convert.ToInt16( textBox1.Text))
      {
        // fr.textbox1 is a textbox form1 and 
        // textbox1.text is a textbox of the form1
        fr.textBox1.SelectionStart =
           int.Parse( textBox1.Text) ;
        fr.textBox1.ScrollToCaret();
        break;
      }
  }
}

解决方法

TextBox.GetFirstCharIndexFromLine方法查找行的第一个字符的索引.
所以你的选择从那里开始.然后找到该行的结尾,即Environment.NewLine或文本的结尾.
由于用户输入行号,您应该使用int.TryParse来处理无效输入.
private void button1_Click(object sender,EventArgs e)
{
    int lineNumber;
    if (!int.TryParse(textBox2.Text,out lineNumber) || lineNumber < 0)
    {
        textBox1.Select(0,0);
        return;
    }

    int position = textBox1.GetFirstCharIndexFromLine(lineNumber);
    if (position < 0)
    {
        // lineNumber is too big
        textBox1.Select(textBox1.Text.Length,0);
    }
    else
    {
        int lineEnd = textBox1.Text.IndexOf(Environment.NewLine,position);
        if (lineEnd < 0)
        {
            lineEnd = textBox1.Text.Length;
        }

        textBox1.Select(position,lineEnd - position);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读