限制RICHTEXTBOX的输入的范围
生活随笔
收集整理的這篇文章主要介紹了
限制RICHTEXTBOX的输入的范围
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
附件: http://files.cnblogs.com/xe2011/WindowsFormsApplication_LimitRichTextBoxInput.rar
using?System; using?System.Collections.Generic; using?System.ComponentModel; using?System.Data; using?System.Drawing; using?System.Linq; using?System.Text; using?System.Windows.Forms; namespace?WindowsFormsApplication4 { ????public?partial?class?Form1?:?Form ????{ ????????public?Form1() ????????{ ????????????InitializeComponent(); ????????} ??????? #region 設置 和 獲得光標所在的行號///要在本類中初始化 richTextBox1 = this;private int EM_LINEINDEX = 0x00BB;private int EM_LINEFROMCHAR = 0x00C9;[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SendMessage")]public static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);/// <summary>/// 獲得光標所在的行號和列號/// </summary>/// <param name="editControl"></param>/// <returns>p.X =列號 p.Y =行號</returns>public Point GetCaretPosition(){int charIndex = (int)SendMessage(richTextBox1.Handle, EM_LINEINDEX, -1, 0);int lineIndex = (int)SendMessage(richTextBox1.Handle, EM_LINEFROMCHAR, charIndex, 0);Point pt = new Point();pt.X = richTextBox1.SelectionStart - charIndex + 1;//Line pt.Y = lineIndex + 1;//Columnreturn pt;}/// <summary>/// 轉到行/// </summary>/// <param name="Line">行號</param>public void jumpLine(int Line){richTextBox1.SelectionStart = SendMessage(richTextBox1.Handle, EM_LINEINDEX, Line - 1, 0);richTextBox1.SelectionLength = 0;richTextBox1.ScrollToCaret();}#endregion 設置 和 獲得光標所在的行號
?
????????//限制文本的能刪除的最小范圍 ????????private?int?nLimiteLength?=?10; ????????private?void?richTextBox1_KeyDown(object?sender,?KeyEventArgs?e) ????????{ ????????????//放置跨行選中文本然后輸入文字 ????????????if?(richTextBox1.SelectedText.IndexOf("\n")?!=?-1) ????????????{ ????????????????Text?=?"MupltiLineSel"; ????????????????e.Handled?=?true; ????????????} ????????????//直接屏蔽的 ????????????//Enter?Ctrl+V?Ctrl+X DEL ????????????if?(e.KeyData?==?Keys.Enter?|| ????????????????e.KeyData?==?(Keys.Control|Keys.V)|| ????????????????e.KeyData?==?(Keys.Control|Keys.X)|| ?e.KeyData?==?Keys.Delete ?? ) ????????????{ ????????????????Text?=?"禁止?Enter?Ctrl+V?Ctrl+X?Space"; ????????????????e.Handled?=?true; ????????????} ????????????int?x?=?GetCaretPosition().X; ???????????? ????????????//BACK? ????????????if?(e.KeyData?==?Keys.Back?) ????????????{ ????????????????if?(x?<?nLimiteLength?+?1) ????????????????{ ????????????????????Text?=?"禁止?Back"; ????????????????????e.Handled?=?true; ????????????????} ????????????} ????????} ??????????? ????????private?void?richTextBox1_KeyPress(object?sender,?KeyPressEventArgs?e) ????????{ ????????????//放置跨行選中文本然后輸入文字 ????????????if?(richTextBox1.SelectedText.IndexOf("\n")?!=?-1) ????????????{ ????????????????Text?=?"MupltiLineSel"; ????????????????e.Handled?=?true; ????????????} ????????????int?x?=?GetCaretPosition().X; ????????????if?(x?<?nLimiteLength) ????????????????e.Handled?=?true; ????????????//space?bar ????????????if?(e.KeyChar?==?'?'?&&?x?<?nLimiteLength) ????????????????e.Handled?=?true; ????????} ????????private?void?timer1_Tick(object?sender,?EventArgs?e) ????????{ ????????????Text?=?String.Format("X={0},Y={1},SelLength={2}",?GetCaretPosition().Y,?GetCaretPosition().X,?richTextBox1.SelectedText.Length); ????????} ????????private?void?Form1_Load(object?sender,?EventArgs?e) ????????{ ????????????//因為輸入漢字能突破上面的限制 ????????????richTextBox1.ImeMode?=?System.Windows.Forms.ImeMode.Off; ????????} ????} }附件列表
?
轉載于:https://www.cnblogs.com/xe2011/p/3780793.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的限制RICHTEXTBOX的输入的范围的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2017 CUDA编程学习10:纹理
- 下一篇: Unity设置中文