• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 124,  comments - 29,  trackbacks - 0
              1using System;
              2using System.Collections.Generic;
              3using System.ComponentModel;
              4using System.Data;
              5using System.Drawing;
              6using System.Text;
              7using System.Windows.Forms;
              8
              9namespace VSGround
             10{
             11    public partial class Form1 : Form
             12    {
             13        public Form1()
             14        {
             15            InitializeComponent();
             16        }

             17
             18        private void Form1_Load(object sender, EventArgs e)
             19        {
             20            txtInput.Focus();
             21            //txt2.TabIndex = 0;
             22        }

             23        private int GetRNCount(String str)
             24        {
             25            int RNnum = 0;
             26            for(int i = 0; i<str.Length; i++)
             27            {
             28                if (str[i] == '\r')
             29                {
             30                    RNnum++;
             31                }

             32            }

             33            return RNnum;
             34        }

             35        //根據行號確定光標索引
             36        private int GetCurIndex(int curRow)
             37        {
             38            int curIndex = 0;
             39            if (curRow < 10)
             40            {
             41                curIndex = 3 * (curRow - 1);
             42            }

             43            else if (curRow < 100)
             44            {
             45                curIndex = (10 - 1* 3  + (curRow - 10* 4;
             46            }

             47            else if (curRow < 1000)
             48            {
             49                curIndex = (10 - 1* 3  + (100-1* 4 + (curRow - 100)*5;
             50            }

             51            else if (curRow < 10000)
             52            {
             53                curIndex = (10 - 1* 3 + (100 - 1* 4 + (1000 - 1* 5 + (curRow - 1000* 6;
             54            }

             55            else
             56            {
             57                curIndex = (10 - 1* 3 + (100 - 1* 4 + (1000 - 1* 5 + (10000 - 1* 6 + (curRow - 10000* 7;
             58            }

             59            return curIndex;
             60        }

             61        private void txtInput_TextChanged(object sender, EventArgs e)
             62        {
             63            txtLeft.Clear();
             64            //兩個textbox中的滾動條保持同步
             65            txtInput.ScrollToCaret();
             66
             67            //定位總行號
             68            String str = txtInput.Text;
             69            if (str != null && str.Length > 0)
             70            {
             71                int countRN = GetRNCount(str);
             72                for(int j = 0; j < countRN+1; j++)
             73                {
             74                    txtLeft.Text += (j + 1).ToString();
             75                    txtLeft.Text += "\r\n";
             76                }

             77                txtLeft.Text = txtLeft.Text.Substring(0, txtLeft.Text.Length - 2);
             78
             79            }

             80            //定位光標所在行號取其前面的子串
             81            int careIndex = txtInput.SelectionStart;
             82            String careFrontStr = txtInput.Text.Substring(0, careIndex);
             83            //分析子串有幾個回車換行符
             84            int countSubRN = GetRNCount(careFrontStr);
             85            int CurRow = countSubRN + 1;
             86            txtLeft.SelectionStart = GetCurIndex(CurRow);
             87            txtLeft.ScrollToCaret();
             88        }

             89
             90        private void txtInput_KeyDown(object sender, KeyEventArgs e)
             91        {
             92            txtInput.ScrollToCaret();
             93            if(e.KeyCode == Keys.Up)
             94            {
             95                //定位光標所在行號取其前面的子串
             96                int careIndex = txtInput.SelectionStart;
             97                String careFrontStr = txtInput.Text.Substring(0, careIndex);
             98                //分析子串有幾個回車換行符
             99                int countSubRN = GetRNCount(careFrontStr);
            100                int CurRow = countSubRN ;
            101                if(CurRow != 0)
            102                {
            103                    txtLeft.SelectionStart = GetCurIndex(CurRow);
            104                }

            105                else
            106                {
            107                    txtLeft.SelectionStart = GetCurIndex(CurRow+1);
            108                }

            109              
            110                txtLeft.ScrollToCaret();
            111            }

            112            else if(e.KeyCode == Keys.Down)
            113            {
            114                                //定位光標所在行號取其前面的子串
            115                int careIndex = txtInput.SelectionStart;
            116                String careFrontStr = txtInput.Text.Substring(0, careIndex);
            117                //分析子串有幾個回車換行符
            118                int countSubRN = GetRNCount(careFrontStr);
            119                int CurRow = countSubRN ;
            120                txtLeft.SelectionStart = GetCurIndex(CurRow + 2);
            121                txtLeft.ScrollToCaret();
            122            }

            123        }

            124    }

            125}

             1using System;
             2using System.Collections.Generic;
             3using System.Windows.Forms;
             4using System.Text;
             5
             6namespace VSGround
             7{
             8    class MyTextBox:System.Windows.Forms.TextBox
             9    {
            10        public MyTextBox():base()
            11        {
            12
            13        }

            14        protected override bool IsInputKey(System.Windows.Forms.Keys KeyData)
            15        {
            16            if (KeyData == System.Windows.Forms.Keys.Up ||
            17                KeyData == System.Windows.Forms.Keys.Down)
            18            return true;
            19        return base.IsInputKey(KeyData);
            20        }

            21    }

            22}
            posted on 2008-09-12 16:52 天書 閱讀(2160) 評論(1)  編輯 收藏 引用

            FeedBack:
            # re: c# 兩個TextBox 同步滾動 實現行號功能
            2013-06-17 10:31 | 請輸入你的姓名
            提交失敗后,可以通過“恢復上次提交”恢復剛剛提交的內容  回復  更多評論
              

            <2008年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(5)

            隨筆檔案

            文章分類

            文章檔案

            好友的Bolg

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            99re这里只有精品热久久| avtt天堂网久久精品| 亚洲国产成人久久精品99| 亚洲伊人久久综合中文成人网| 久久久受www免费人成| 人妻久久久一区二区三区| 久久精品国产91久久麻豆自制| 久久精品中文闷骚内射| 亚洲国产精品久久| 亚洲日韩中文无码久久| 久久久久免费精品国产| 老司机午夜网站国内精品久久久久久久久 | 成人国内精品久久久久影院VR | 久久99精品久久久久子伦| 精品久久久久久无码人妻热 | 久久天天躁狠狠躁夜夜avapp| 久久精品嫩草影院| 久久综合国产乱子伦精品免费| 国产精品gz久久久| 狠狠干狠狠久久| 欧美黑人激情性久久| 亚洲国产成人精品女人久久久| 国产精品久久久久久福利69堂| 思思久久99热只有频精品66| 91亚洲国产成人久久精品| 国产午夜福利精品久久2021| 欧美伊人久久大香线蕉综合| 欧美国产成人久久精品| 99久久精品免费观看国产| 国产精品久久影院| 国产99久久精品一区二区| 久久久亚洲AV波多野结衣| 蜜桃麻豆www久久国产精品| 欧美精品福利视频一区二区三区久久久精品| 漂亮人妻被黑人久久精品| 97精品依人久久久大香线蕉97| 久久久久久午夜精品| 99精品久久精品一区二区| 久久综合噜噜激激的五月天| 久久婷婷五月综合国产尤物app| 少妇高潮惨叫久久久久久 |