C# 封装实例
时间:2022-07-23
本文章向大家介绍C# 封装实例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天这个主题也是帮群友解答的一个问题,
如下图,有很多方法都要重复利用一段代码,所以他需要把它封装成为一个方法去调用,但是 这个键盘按下事件 他不知道怎么封装.
封装 被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使开发者实现所需级别的抽象。
C# 封装根据具体的需要,设置使用者的访问权限,并通过 访问修饰符 来实现。
一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:
- public:所有对象都可以访问;
- private:对象本身在对象内部可以访问;
- protected:只有该类对象及其子类对象可以访问
- internal:同一个程序集的对象可以访问;
- protected internal:访问限于当前程序集或派生自包含类的类型。
首先解释下:
KeyPressEventArgs.Handled 属性bai 获取或设置一个值,该值指示是否处理过du KeyPress 事件zhi。 属性值类型:System.Boolean如果处理过事dao件,则为 true; 否则为 false。备注如果未处理事件,则会将它发送到操作系统进行默认处理。 将 Handled 设置为 true,以取消 KeyPress 事件。以上来源MSDN。 解释:就是说如果将Handled 设为True,那么KeyPress事件将会取消,这样就是说你按下了某个个按键了,但是系统不处理了,等于没按!!!
完成代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp29
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
test t = new test();
private void button1_Click(object sender, EventArgs e)
{
// test t = new test();
// t.doThing(this, new KeyPressEventArgs('1'));
}
//KeyPressEventArgs.Handled 属性bai 获取或设置一个值,该值指示是否处理过du KeyPress 事件zhi。
// 属性值类型:System.Boolean如果处理过事dao件,则为 true;
// 否则为 false。备注如果未处理事件,则会将它发送到操作系统进行默认处理。
// 将 Handled 设置为 true,以取消 KeyPress 事件。以上来源MSDN。
// 解释:就是说如果将Handled 设为True,那么KeyPress事件将会取消,这样就是说你按下了某个个按键了,但是系统不处理了,等于没按!!!
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
t.doThing(e);
}
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
t.doThing(e);
}
}
class test
{
public void doThing(KeyPressEventArgs e)
{
string pa = "[0-9]|b";//匹配数字与退格符
Regex r = new Regex(pa);
Match m = r.Match(e.KeyChar.ToString());
if (m.Success)
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("请输入数字:", "提示");
}
}
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2020 ISG“观安杯”最高分值web题的解题思路大放送
- 详解 JS 压缩图片
- LeetCode 1553. Minimum Number of Days to Eat N Oranges
- 异步IO数据库队列缓存
- markdown转为pdf文件
- [已解决]报错:Required request body is missing
- jupyter notebook修改默认路径和浏览器
- python selenium while 循环
- implicitly_wait()隐式等待
- [已解决]python FileNotFoundError: [WinError 3] for getsize(filepath)
- [已解决]ValueError: row index was 65536, not allowed by .xls format
- 记一次由Redis分布式锁造成的重大事故,避免以后踩坑!
- ES6部分源码重写 -1(ES5-构造函数解析)
- ES6部分源码重写 -2(ES6-构造函数初步解析)
- ES6部分源码重写 -3(ES6-ES5的方式来手写部分源码)