C# 程序开发范例宝典读书笔记(七)——TextBox控件

1、只允许输入数字

控制文本框中只能输入数字主要是通过TextBox控件的KeyPress事件实现的。KeyPress事件用来在控件有焦点的情况下,按下键时发生,语法为:

 public event KeyPressEventHandler KeyPress

KeyPressEventHandler表示将要处理Control的KeyPress事件的方法。其语法为:

public delegate void KeyPressEventHandler(object sender,KeyPressEventArgs e)

参数说明: sender:事件源;

                    e :包含事件数据的KeyPressEventArgs 。

KeyPressEventArgs对象有Handled属性和KeyChar属性。

(1)Handled属性:

          获取或设置一个值,指示是否处理过KeyPress事件。如果处理过,则为True,否则为False。

(2)KeyChar属性:

        获取或设置与按下的键对应的字符。属性值为键盘对应的ASCII字符。

eg. 判断用户是否按下回车键,代码如下:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar ==13)
            {
                MessageBox.Show("您按下了回车键");                               
            }
        }

常用键盘对应的ASCII字符集:

常数          值    描述
vbKeyA     65     A 键
vbKeyB     66     B 键
vbKeyC     67     C 键
vbKeyD    68     D 键
vbKeyE     69     E 键
vbKeyF    70     F 键
vbKeyG     71     G 键
vbKeyH     72     H 键
vbKeyI     73     I 键
vbKeyJ     74     J 键
vbKeyK     75     K 键
vbKeyL     76     L 键
vbKeyM     77     M 键
vbKeyN     78     N 键
vbKeyO     79     O 键
vbKeyP     80     P 键
vbKeyQ     81     Q 键
vbKeyR     82     R 键
vbKeyS     83     S 键
vbKeyT     84    T 键
vbKeyU     85     U 键
vbKeyV     86    V 键
vbKeyW     87    W 键
vbKeyX     88     X 键
vbKeyY     89     Y 键
vbKeyZ     90     Z 键
小写字母为对应大写字母加上32

0——9的ASCII值对应分别为48——57

回车:13

换行:10;

空:0;

退格(Backspace):8;

 因此:只允许输入数字的程序代码为:(注意:在限制用户输入非0~9间数字的同时,不应限制用户输入“回车”和“退格”)

private void txtSum_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar != 8 && !char.IsDigit(e.KeyChar))&&e.KeyChar!=13)
            {
                MessageBox.Show("只能输入数字","操作提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                e.Handled = true;               
            }
        }

 

 2、限制输入长度及设置密码文本

 (1)限制输入长度:

              可通过设置TextBox控件的MaxLength属性即可限制最大长度。也可以在Form_Load函数中限制,如:

           private void Form1_Load(object sender, EventArgs e)
        {
            this.textBox1.MaxLength = 6;
            }

              如果输入字符超过最大长度需要输入提示语言,示例代码为:

       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
           
                if (textBox1.Text.Length == 6)
                {
                    MessageBox.Show("用户名只能输入6个字符");
                }
        }

         限制的最小长度一般需要在信息提交(如点击确定键)时确定,如:

     private void button1_Click(object sender, EventArgs e)
        {
            if (textBox2.Text.Length < 6)
            {
                MessageBox.Show("用户密码不能低于6位");
                this.textBox2.Text = "";
                textBox2.Focus();
            }
        }

 (2)设置密码文本:

    当输入密码时需要显示为“*”或“#”时,只需要设置控件的PasswordChar为“*”或“#”即可。

   也可以在Form_load函数中设置:this.textBox2.PasswordChar = '*';

3、自动删除非法字符

主要通过KeyUp事件,KeyValue属性(对应键盘值的ASCII码),Select()方法(选取文本框的文本范围,有两个参数:Start和length),SelectAll()方法,SelectedText属性等实现。

如:实现只输入1~8,其他字符则自动删除的功能:

private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyValue <= 48 || e.KeyValue >= 57)
            {

                textBox1.Select(0, textBox1.Text.Length - 1 ); //设置文本框中选中的文本
                textBox1.Text = textBox1.SelectedText;
                textBox1.SelectAll(); //选择全部文本
                textBox1.SelectionStart = textBox1.Text.Length;
                textBox1.Focus(); //获得焦点
                e.Handled = true;
            }
        }

也可以通过输入非法字符时忽略该输入实现:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar))
            {              

                    e.Handled = true;
            }
        }

 

4、带记忆功能的文本框(为TextBox控件中添加列表选择框)

双击文本框显示以前输入过的项:

(1)、双击实现(可设置两次单击鼠标按钮之间的时间,以确定是否为双击事件)

private void textBox1_DoubleClick(object sender, EventArgs e)
        {
            if (listBox1.Items.Count != 0)
            {
                this.listBox1.Visible = true;
            }
        }

(2)、KeyPress事件

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                if (textBox1.Text.ToString() != "")
                {
                    this.listBox1.Items.Add(this.textBox1.Text);
                    this.textBox1.Text = "";
                }
            }
        }

(3)、当点击listBox中的项时,在textBox中显示该文本

 private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem.ToString() != "")
            {
                textBox1.Text = listBox1.SelectedItem.ToString();
                textBox1.SelectionStart = this.textBox1.Text.Length;
                textBox1.Focus();
                listBox1.Visible = false;
            }
        }

第10章 SQL查询相关技术 425<br>10.1 SELECT子句 426<br>实例292 查询特定列数据 426<br>实例293 使用列别名 428<br>实例294 在列上加入计算 430<br>实例295 使用函数设置条件 431<br>10.2 查询常量 432<br>实例296 查询数字 433<br>实例297 查询字符串 434<br>实例298 查询日期数据 436<br>实例299 查询逻辑型数据 437<br>实例300 查询空数据 438<br>10.3 查询变量 440<br>实例301 利用变量查询字符串数据 440<br>实例302 利用变量查询数值型数据 441<br>实例303 利用变量查询日期型数据 442<br>10.4 模式查询 444<br>实例304 利用“_”通配符进行查询 444<br>实例305 利用“%”通配符进行查询 445<br>实例306 利用“[]”通配符进行查询 446<br>实例307 利用“[^]”通配符进行查询 448<br>实例308 复杂的模式查询 449<br>10.5 TOP和PERCENT限制查询结果 450<br>实例309 查询前10名数据 450<br>实例310 取出数据统计结果的前10名数据 451<br>实例311 查询销售量占前50%的图书信息 453<br>实例312 查询库存数量占后20%的图书信息 454<br>10.6 周期、日期查询 455<br>实例313 查询指定日期的数据 455<br>实例314 查询指定时间段的数据 457<br>实例315 按月查询数据 458<br>10.7 比较、逻辑、重复查询 460<br>实例316 查询数据大于指定条件的数据 460<br>实例317 NOT与谓词进行组合条件的查询 461<br>实例318 查询时不显示重复记录 463<br>实例319 列出数据的重复记录和记录条数 465<br>10.8 在查询使用OR和AND运算符 466<br>实例320 利用OR运算符进行查询 466<br>实例321 利用AND运算符进行查询 467<br>实例322 同时利用OR、AND运算符进行查询 469<br>10.9 排序、分组统计 471<br>实例323 数据分组统计(单列) 471<br>实例324 在分组查询使用ALL关键字 473<br>实例325 在分组查询使用CUBE运算符 475<br>实例326 在分组查询使用ROLLUP 477<br>实例327 对数据进行降序查询 479<br>实例328 对数据进行多条件排序 480<br>实例329 对统计结果进行排序 482<br>实例330 按仓库分组统计图书库存(多列) 483<br>实例331 多表分组统计 484<br>实例332 使用COMPUTE 485<br>实例333 使用COMPUTE BY 487<br>10.10 聚合函数 488<br>实例334 利用聚合函数SUM对销售额进行汇总 488<br>实例335 利用聚合函数AVG求某班学生的平均年龄 490<br>实例336 利用聚合函数MIN求销售额、利润最少的商品 492<br>实例337 利用聚合函数MAX求月销售额完成最多的员工 493<br>实例338 利用聚合函数COUNT求日销售额大于某值的商品数 495<br>实例339 利用聚合函数First或Last求数据表第一条或最后一条记录 496<br>10.11 多表查询(连接查询) 498<br>实例340 利用FROM子句进行多表查询 498<br>实例341 使用表别名 499<br>实例342 合并多个结果集 501<br>10.12 嵌套查询 503<br>实例343 简单嵌套查询 503<br>实例344 复杂嵌套查询 504<br>实例345 嵌套查询在查询统计的应用 506<br>10.13 子查询 508<br>实例346 用子查询做派生的表 508<br>实例347 用子查询作表达式 510<br>实例348 在Update语句应用子查询 511<br>10.14 联合语句Union 512<br>实例349 使用联合查询 512<br>实例350 多表联合查询 514<br>实例351 对联合查询后的结果进行排序 515<br>10.15 内联接查询 517<br>实例352 简单内联接查询 517<br>实例353 复杂内联接查询 518<br>实例354 使用内联接选择一个表与另一个表行相关的所有行 519<br>10.16 外联接查询 520<br>实例355 left outer join查询 521<br>实例356 right outer join查询 522<br>实例357 使用外联接进行多表联合查询 523<br>10.17 利用IN进行查询 525<br>实例358 用IN查询表的记录信息 525<br>实例359 使用IN引入子查询限定查询范围 526<br>10.18 交叉表查询 527<br>实例360 利用Trasform分析数据 527<br>实例361 利用Trasform动态分析数据 529<br>实例362 静态交叉表(SQLServer 2000) 531<br>实例363 动态交叉表(SQLServer 2000) 533<br>10.19 函数查询 535<br>实例364 在查询语句使用格式化函数 536<br>实例365 在查询语句使用字符串函数 537<br>实例366 在查询使用日期函数 538<br>10.20 having语句应用 540<br>实例367 利用having语句过滤分组数据 540<br>实例368 having语句应用在多表查询 541<br>10.21 视图的应用 543<br>实例369 在C#应用视图 543<br>实例370 获取数据库的全部用户视图 544<br>实例371 通过视图修改数据 545<br>10.22 存储过程的应用 546<br>实例372 C#应用存储过程 546<br>实例373 应用存储过程添加数据 547<br>实例374 应用存储过程修改数据 549<br>实例375 应用存储过程删除数据 550<br>实例376 C#应用查询存储过程 551<br>实例377 获取数据库全部的存储过程 552<br>实例378 加密存储过程 553<br>10.23 触发器的应用 555<br>实例379 Insert触发器的应用 555<br>实例380 Update触发器在系统日志的应用 556<br>实例381 触发器的嵌套使用 557<br>实例382 获取数据库的触发器 559
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值