附件:
 

 
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. CF980E The Number Games【树链剖分/线段树】

    CF980E The Number Games 题意翻译 Panel 国将举办名为数字游戏的年度表演.每个省派出一名选手. 国家有 n 个编号从 1 到 n 的省,每个省刚好有一条路径将其与其他省相连 ...

  2. NSAttributedString描述

    字符属性 字符属性可以应用于 attributed string 的文本中. NSString *const NSFontAttributeName;(字体) NSString *const NSPa ...

  3. offset大家族(一)

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. OpenVPN原理及实践文章收集(转)

    一.基本理论篇 vpn原理及实现--一般理论 vpn原理及实现--隧道的一种实现 vpn原理及实现--虚拟网卡构建vpn vpn原理及实现--tcp还是udp Linux平台VPN技术概论 Linux ...

  5. Java中常见的IO流及其使用

    Java中IO流分成两大类,一种是输入流.全部的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源.我们能够通过输入流的read方法读取字节数据.还有一种是输出流,全部的输出流 ...

  6. INTEL SSD SMART 性能 E8 E9 转

    如题今天研究了一下怎么看Intel SSD Toolbox里边显示的Smart信息.首先说,查看Intel SSD smart信息最好最方便的当然就是自家的工具箱,用其他工具查看不是不可以,但是很多数 ...

  7. 解析本内置Linux目录结构

    使用声明:1.此版本采用官方原版ISO+俄罗斯HunterTik 的Debian包制作而成2.此IMG包未进行Crack,资源来源于网络,如果你下载的是Crack版,与原作者无关,请自行分辨.“就看人 ...

  8. hint.css使用说明

    GitHub:http://liu12fei08fei.github.io/html/1hint.html hint.css使用说明 用途 快速实现tooltips提示样式 相关资源 官方网站GitH ...

  9. Roundcube login via PHP script

    目前正在整合 roundcube 1.0.5 的邮件系统和其他系统,想取消登录过程,发现了这个,先赞一个! 原文地址: http://blog.philippheckel.com/2008/05/16 ...

  10. 点集转线python最优代码

    import arcpy import os import types def convertPoints(): arcpy.env.overwriteOutput = True inPts = ar ...