附件:
 

 
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, -, );

            int lineIndex = (int)SendMessage(richTextBox1.Handle, EM_LINEFROMCHAR, charIndex, );

            Point pt = new Point();

            pt.X = richTextBox1.SelectionStart - charIndex + ;//Line

            pt.Y = lineIndex + ;//Column

            return pt;

        }

        /// <summary>

        /// 转到行

        /// </summary>

        /// <param name="Line">行号</param>

        public void jumpLine(int Line)

        {

            richTextBox1.SelectionStart = SendMessage(richTextBox1.Handle, EM_LINEINDEX, Line - , );

            richTextBox1.SelectionLength = ;

            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;
        }
    }
}
 
 
 
 
 
 
 
 
 
 
 

附件列表

限制RICHTEXTBOX的输入的范围的更多相关文章

  1. WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

    一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本 ...

  2. 将richTextBox中的内容写入txt文件发现不换行(解决方法),在richTextBox指定位置插入文字

    string pathname = dt.ToString().Replace(":", ""); string str = richTextBoxResult ...

  3. 初学c# -- 学习笔记(七) RichTextBox支持GIF

    园子里许明吉博客写的一篇,刚好用到这个,写的非常好.转过来了 不过在应用中也有一些问题,win10下不能中文输入,凑合着进行了修改, 下面是原来的代码: private void button2_Cl ...

  4. RichTextBox文字处理控件属性介绍

    RichTextBox控件是一种既能够输入文本. 又能够修改文本的文字处理控件, 与TextBox控件比较, RichTextBox控件的文字处理功用更加丰厚, 不只能够设定文字的色彩. 字体, 还具 ...

  5. WPF RichTextBox,关键字搜索,样式改变,超链接替换,图文混排

    RichTextBox 只是一个控件,表示对 FlowDocument 对象执行操作的丰富编辑控件.它所承载的内容由其 Document 属性来呈现. Document 是一个 FlowDocumen ...

  6. (C#)RichTextBox控件

    RichTextBox(有格式文本)控件可实现TextBox控件的所有功能. ❶在RichTextBox控件中显示滚动条 RichTextBox可设置Multiline属性来控制是否显示滚动套,tru ...

  7. C# winform 加载网页 模拟键盘输入自动接入访问网络

    声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络 ...

  8. 《Programming WPF》翻译 第3章 2.处理输入

    原文:<Programming WPF>翻译 第3章 2.处理输入 在Windows应用程序中,又3种基本的用户输入形式:鼠标.键盘和手写板.同时,还有一种更高级输入方式,其可能来自快捷键 ...

  9. C# RichTextBox 制作文本编辑器

    本文利用一个简单的小例子[文本编辑器],讲解RichTextBox的用法,仅供学习分享使用,如有不足之处,还请指正. Windows窗体中的RichTextBox控件用于显示,输入和操作格式化的文本, ...

随机推荐

  1. Android 打包出现jdk版本错误的问题

    Android 打包出现 jdk 版本错误的问题,本质上是 SDK 的问题,与 JDK 无关.如果 SDK 的 API 是24或者更高,就要求 jdk 1.8,我这里指定的 API 是22,所以去勾选 ...

  2. Express浅析

    一.Express是什么? 首先Express是一个Node.js的Web框架,它的API使用各种HTTP实用程序方法和中间件,快速方便地创建强大的API,性能方面Express提供精简的基本web应 ...

  3. 【NOIP2014】联合权值 树上dp

    题目描述 Description 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i   ,每条边的长度均为1 .图上两点( u ,  v ) 的距离定 ...

  4. GIT(1)----更新代码和上传代码操作的步骤

    1.第一次下载代码 a.首先获得下载的地址,可从服务器,或者GitHut上获得.例如http://100.211.1.110:21/test/test.git b.终端里切换到想要将代码存放的目录,在 ...

  5. Matlab 常用绘图指令(二维图形)

    使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用. 1.例子-包含了常用绘图命令 clear clc %%数据准备 x ...

  6. spring---aop(1)---AOP概念

    写在前面 由于spring的事务系列,可以带出spring的aop.spring的事务只是spring的一个具体实现 名词解释 通知.增强处理(Advice) 就是你想要的功能,也就是上说的安全.事物 ...

  7. Tomcat启动异常 java.net.BindException: Cannot assign requested address: JVM_Bind

    从Apache官网下载的tomcat7,在MyEclipse中启动时抛出如下异常: 严重: StandardServer.await: create[localhost:8005]: java.net ...

  8. SVN服务器与客户端下载地址_搭建使用

    下载地址: http://subversion.apache.org/packages.html Windows CollabNet (supported and certified by Colla ...

  9. sublime插件汇总

    JsFormat javascript格式化 有时从网上扒了人家的js代码来学习学习,打开发现被压缩了,这时就能够用JsFormat插件格式化js代码,恢复未压缩时候的排版,挺给力的.按快捷键Ctrl ...

  10. mount nfs 经常出错信息总结(转)

    通常当NFS不能正常使用时候会给出提示,一般给出一下几种: 1)mount: 192.168.1.111:/opt failed, reason given by server: Permission ...