• <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 天書 閱讀(2175) 評論(1)  編輯 收藏 引用

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

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

            常用鏈接

            留言簿(5)

            隨筆檔案

            文章分類

            文章檔案

            好友的Bolg

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲国产另类久久久精品黑人| 久久久久99这里有精品10| 少妇内射兰兰久久| 久久亚洲国产午夜精品理论片| 久久se精品一区二区影院| 日本久久中文字幕| 久久久久亚洲AV无码网站| AAA级久久久精品无码区| 精品熟女少妇AV免费久久| 国产亚洲欧美成人久久片| 天天综合久久一二三区| 欧美大战日韩91综合一区婷婷久久青草 | 久久久久久精品免费免费自慰| 日韩乱码人妻无码中文字幕久久 | 久久99精品国产麻豆婷婷| 人妻无码αv中文字幕久久琪琪布| 2021久久国自产拍精品| 一本一本久久a久久精品综合麻豆| 久久精品国产第一区二区三区| 日本高清无卡码一区二区久久| 国产欧美久久一区二区| 久久夜色精品国产欧美乱| 亚洲乱码日产精品a级毛片久久 | 久久无码人妻一区二区三区| 欧美性猛交xxxx免费看久久久| 99精品久久精品一区二区| 欧美黑人又粗又大久久久| 久久久亚洲AV波多野结衣| 亚洲精品视频久久久| 久久久久这里只有精品| 亚洲欧美日韩精品久久| 久久美女网站免费| www.久久热| 66精品综合久久久久久久| 久久精品国产福利国产秒| 97久久综合精品久久久综合| 久久精品www人人爽人人| 国内精品伊人久久久久AV影院| 亚洲精品乱码久久久久久久久久久久 | 亚洲精品无码久久久久sm| 亚洲精品无码久久一线|