C#控件事件与数据存储实战

《键盘事件》

form绑定事件

获得绑定事件的控件的tag属性

//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();
}
}

效果如下:

用keys1-9 或者用鼠标点击文本都会触发事件 发出声音

《富文本》

richTextBox

四个代码事件代码如下

richTextBox1.AppendText("\n大河之剑天上来\n");//AppendText 追歼新文本

//MessageBox.Show(richTextBox1.Text);

}

//添加文本

private void button4_Click(object sender, EventArgs e)

{

OpenFileDialog fileDialog= new OpenFileDialog();//创建文件对话框

DialogResult result = fileDialog.ShowDialog();//打开对话框

if (result == DialogResult.OK)

{

string data = File.ReadAllText(fileDialog.FileName,Encoding.Default);

richTextBox1.AppendText(data+"\n");

}

}

//修改字体

private void button1_Click(object sender, EventArgs e)

{

FontDialog fontDialog= new FontDialog();//字体对话框

if (fontDialog.ShowDialog() == DialogResult.OK)

{

//SelectionFont 选中文本的字体

richTextBox1.SelectionFont= fontDialog.Font;

}

}

//修改字体背景颜色

private void button3_Click(object sender, EventArgs e)

{

ColorDialog colorDialog = new ColorDialog();//颜色取色对话框

if (colorDialog.ShowDialog() == DialogResult.OK)

{

//richTextBox1.SelectionColor = colorDialog.Color;//colorDialog取色器选取的颜色

richTextBox1.SelectionBackColor = colorDialog.Color;// colorDialog.Color 取色器选取的颜色

}

}

//修改字体颜色

private void button2_Click(object sender, EventArgs e)

{

ColorDialog colorDialog= new ColorDialog();//颜色取色对话框

if (colorDialog.ShowDialog()==DialogResult.OK)

{

richTextBox1.SelectionColor = colorDialog.Color;//colorDialog取色器选取的颜色

// richTextBox1.SelectionBackColor = colorDialog.Color;// colorDialog.Color 取色器选取的颜色

}

}

效果如下:

《时间选择器和进度条》

图列如下

代码如下

{

InitializeComponent();

dateTimePicker1.Format = DateTimePickerFormat.Custom;//设置时间选择器格式为自定义格式

dateTimePicker1.CustomFormat = "MMM dd yyyy HH:mm:ss:dddd";

}

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)

{

label1.Text=((DateTimePicker)sender).Value.ToString();

}

//点击进度条

private void progressBar1_Click(object sender, EventArgs e)

{

if (progressBar1.Value<100)

{

progressBar1.Value += progressBar1.Step;

}

}

效果如下:

《csv数据格式》

/csv数据格式:表格数据格式
//以记事本的方式打开 数据格式为
//姓名,年龄,性别
//张三,20,男
//李四,20,女

//把记事本后缀名改为csv格式,以excel表格的方式展示数据

}
//存储数据的方法
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))
{
//csv如果不存在,证明第一次写入,把表头写入csv
//File.Create(path);
//创建文件流(水管)
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))//参数2是否是追加的方式
{
return sw1.ReadToEnd();
}
}

//写入
private void button1_Click(object sender, EventArgs e)
{
SaveData("坤坤", 30, "男");
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(ReadData());
}

效果如下:

相关推荐
郭涤生5 分钟前
std::condition_variable的使用及主要事项
开发语言·c++
小菜鸡桃蛋狗10 分钟前
C++——list
开发语言·c++
hopetomorrow19 分钟前
学习路之PHP --PHP 常用扩展及作用表
开发语言·学习·php
simple-L623 分钟前
Java开发痛点技术文章大纲
java·开发语言
m0_6356474835 分钟前
Qt打包含有第三方库的软件为应用程序——CQtDeployer
开发语言·数据库·qt
simple-L642 分钟前
Vue3 前端开发技术文章大纲
开发语言
南宫萧幕43 分钟前
Python与Simulink联合仿真:基于DQN的HEV能量管理策略建模与全链路排雷实战
开发语言·人工智能·python·算法·机器学习·matlab·控制
千寻girling1 小时前
滑动窗口刷了快一个月(26天)了 , 还没有刷完. | 含(操作系统学什么的Java 后端)
java·开发语言·javascript·c++·人工智能·后端·python
曾凡玉@1 小时前
Python 并发编程系统笔记
开发语言·笔记·python
代码中介商1 小时前
C语言核心知识完全回顾:从数据类型到动态内存管理
c语言·开发语言