1.键盘事件
窗体form的KeyDown 属性KeyPress 属性KeyUp属性都是键盘事件。
KeyDown:在按下键盘上的某个键触发
KeyPress:在控件具有焦点并且按下并释放键盘上的某个键触发。
KeyUp:释放某个键触发

这里是一个钢琴的小例子:
cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//SoundPlayer 播放音频的一个类
SoundPlayer player = new SoundPlayer();
//label的绑定事件
private void label1_Click(object sender, EventArgs e)
{
Label label = (Label)sender;
string tag = label.Tag.ToString();// 获取绑定事件的控件的tag属性,tag是对象类型
string path = "sounds1/" + tag + ".wav";
player.SoundLocation = path; //SoundLocation 音频的路径
player.Load();// 加载资源
player.Play();// 播放音频
}
//form窗体绑定的事件
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
// MessageBox.Show(e.KeyValue + " "); //1-9的数字 对应的 49-57范围
if (e.KeyValue>=49&&e.KeyValue<=57)
{
player.SoundLocation = "sounds1/" + (e.KeyValue - 48) + ".wav";
player.Load();// 加载资源
player.Play();// 播放音频
}
}
}
其中音频为本地文件。
2.富文本
富文本框(RichTextBox)控件是一个功能强大的文本编辑控件,它允许用户输入和编辑文本,同时支持丰富的文本格式,如字体、颜色、段落样式等。与标准的TextBox控件相比,RichTextBox控件提供了更高级的文本处理功能。
AppendText 追加新新文本
richTextBox1.AppendText("\n大河之剑天上来\n");
1.添加文本
cs
private void button4_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog(); // 创建文件对话框
DialogResult result = fileDialog.ShowDialog();//打开对话框
if (result == DialogResult.OK)
{
// fileDialog.FileName C:\Users\Administrator\Desktop\新建文本文档 - 副本.txt
string data = File.ReadAllText(fileDialog.FileName,Encoding.Default);
richTextBox1.AppendText(data+"\n");
}
}
2.修改字体
cs
private void button1_Click(object sender, EventArgs e)
{
FontDialog fontDialog = new FontDialog();//字体对话框
if (fontDialog.ShowDialog()==DialogResult.OK)
{
//SelectionFont 选中文本的字体
richTextBox1.SelectionFont = fontDialog.Font;
}
}
3.修改字体颜色
cs
private void button2_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();//颜色取色对话框
if (colorDialog.ShowDialog()==DialogResult.OK)
{
//richTextBox1.SelectionColor 富文本选中的字体颜色
richTextBox1.SelectionColor = colorDialog.Color;//colorDialog.Color 取色器选取的颜色
}
}
4.修改字体背景颜色
cs
private void button3_Click(object sender, EventArgs e)
{
ColorDialog colorDialog = new ColorDialog();//颜色取色对话框
if (colorDialog.ShowDialog() == DialogResult.OK)
{
//richTextBox1.SelectionBackColor 富文本选中的字体背景颜色
richTextBox1.SelectionBackColor= colorDialog.Color;//colorDialog.Color 取色器选取的颜色
}
}
3.时间选择器和进度条
A.时间选择器
DateTimePicker控件允许用户选择日期和时间,并以指定的格式显示。

主要属性:
Value:获取或设置控件中选定的日期/时间。
CustomFormat:当Format设置为Custom时,可以指定自定义格式字符串。
MinDate和MaxDate:允许选择的最小和最大日期。
Format:设置日期时间的显示格式。可选值:
Long::长日期格式(例如:2023年5月15日)
Short:短日期格式(例如:2023/5/15)
Time:时间格式(例如:15:30:00)
Custom:自定义格式(需要设置CustomFormat属性)
cs
public Form1()
{
InitializeComponent();
dateTimePicker1.Format = DateTimePickerFormat.Custom;// 设置时间选择器格式为自定义格式
dateTimePicker1.CustomFormat = "MMM dd yyyy HH:mm:ss dddd";
progressBar1.BackColor = Color.GreenYellow;
}
B.进度条
ProgressBar控件用于显示操作的进度,通常用于长时间运行的操作。
主要属性:
1.Minimum 和Maximum:进度条的最小值和最大值,默认为0和100。
2.Value:当前进度值,必须在Minimum和Maximum之间。
常用方法:
PerformStep():按照Step属性增加进度值。
4.csv数据格式
csv数据格式:表格数据格式,
以记事本的方式打开 数据格式为:
姓名,年龄,性别
张三,20,男
李四,20,女
把记事本后缀名改成csv格式,以excel表格的方式展示数据(微软excel可能不适用)
cs
//存储数据的方法
public void SaveData(string name,int age,string sex)
{
//Debug下的data文件夹
string filePath = Directory.GetCurrentDirectory()+"\\data";
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);// 如果文件夹不存在 创建文件夹data
}
string path = $"{filePath}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv"; //csv文件的名称
if (!File.Exists(path))
{
MessageBox.Show(path);
//csv如果不存在,证明第一次写入,把表头写入csv文件
// File.Create(path);
//1 创建文件流(水管)
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);
//2 创建写入工具(抽水泵) 参数可以是路径 也可以是文件流
StreamWriter sw = new StreamWriter(fs,Encoding.Default);
//3 组织写入内容
StringBuilder sb = new StringBuilder(); // 可变字符串
sb.Append("姓名").Append(",").Append("年龄").Append(",").Append("性别");
//4 开始写入
sw.WriteLine(sb.ToString());
//5关闭和释放资源
sw.Close(); // 关闭写入工具
sw.Dispose(); //释放资源
fs.Close();
fs.Dispose();
}
//如果csv已经存在,证明表头存在,
//以下写入内容的
using (StreamWriter sw1 = new StreamWriter(path,true,Encoding.Default)) // 参数2 是否是追加的方式
{
//写入内容
StringBuilder sb = new StringBuilder(); // 可变字符串
sb.Append(name).Append(",").Append(age).Append(",").Append(sex);
sw1.WriteLine(sb.ToString());
}
}
//读取数据的方法
public string ReadData()
{
string filePath = Directory.GetCurrentDirectory() + "\\data";
string path = $"{filePath}\\{DateTime.Now.ToString("yyyy-MM-dd")}.csv"; //csv文件的名称
using (StreamReader sw1 = new StreamReader(path, Encoding.Default))
{
return sw1.ReadToEnd();
}
}
//写入
private void button1_Click(object sender, EventArgs e)
{
SaveData("坤坤",30,"男");
}
private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(ReadData());
}