当前位置: 首页 > news >正文

C#笔记(5)

一、winform项目与窗体控件

1、部分类的使用

好处:让自动生成的代码后置,我们编写程序的代码显得更加简洁

特点:在最后编译的时候,仍然编译成一个窗体类。

  1. 窗体和控件的基本使用

3、Event事件(委托--》事件)

理解事件:

在.Net平台上面,给我们所用的这些控件,封装了很多的事件。所谓事件,就是对用户操作的某一个行为进行封装。比如,当用户点击一个按钮的时候,单击这个动作,已经被封装成了Click事件,那么我们只要把这个事件拿出来,当用户触发单击这个动作的时候,也就是这个事件被调用了,我们就可以在这个事件中,完成我们需要的任务。

InitializeComponent();//调用Desinger类中的方法,用于控件初始化

Sender表示当前控件的对象

二、学会:

【1】能够找到我们需要的控件事件。

【2】根据事件生成事件方法,并编写业务逻辑。

【3】如果事件不在需要,要知道如何把事件关联(委托)和事件方法的删除,如果址删除一个事件方法会报错。

【4】窗体的俩个事件,并且学会窗体关闭前的确认逻辑是如何处理的!

事件参数:

        //窗体关闭后发生的private void Form1_FormClosed(object sender, FormClosedEventArgs e){//可以在这里编写要做的其他任务// MessageBox.Show("窗体关闭了","",MessageBoxButtons.OK);}

核心内容:窗体常用属性、按钮常用属性、按钮单击事件、生成方法、事件删除方法、窗体常用事件和退出确认的实现。

  1. 事件的集中响应

原理:就是相同的控件、可以关联同一事件响应方法

好处:可以集中处理数据

核心内容:按钮的集中添加和Tag数据的封装、窗体Controls集合优化事件关联。

  1. 事件通用处理中数据的获取

核心内容:在按钮事件中获取数据的方法、对象的封装、泛型集合List运用

三、控件或窗体右键属性

c# ContextMenuStrip控件简单用法-CSDN博客

C# Winform MessageBox的用法 各种类型弹出框-CSDN博客

winform窗体关闭事件的实例-CSDN博客

  • 事件的集中响应

复制(Ctrl+拖动)控件时它的事件也会复制

原理:相同的控件,可以关联同一个事件响应方法

好处:我们可以集中处理数据

容器控件(Panel等...):

在容器中放控件必须加到对应的容器的集合(Controls)里面

代码实例:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace client_sideUI
{public partial class Form1 : Form{private List<string> Clacklist = new List<string>();//数据绑定控件private BindingSource bindingSource = null;/// <summary>/// 构造方法:初始化所有的控件/// </summary>public Form1(){//this.button1.Text = "111";//在初始化的方法前面不要写任何代码InitializeComponent();//调用Desinger类中的方法,用于控件初始化//将控件的Click事件和事件方法关联this.button1.Click += new System.EventHandler(this.buttonNoe_Click);//我们想完成控件或其他初始化内容,在构造方法中写!SetupDataBinding();}// 设置数据绑定private void SetupDataBinding(){bindingSource = new BindingSource();// 使用匿名类型转换字符串列表var bindingList = Clacklist.Select(s => new { 课程名称 = s }).ToList();bindingSource.DataSource = bindingList;dataGridView1.DataSource = bindingSource;}// 刷新DataGridView显示private void RefreshGridView(){SetupDataBinding();//刷新数据bindingSource.ResetBindings(false);//重新加载数据dataGridView1.Refresh();}//事件方法private void button1_Click(object sender, EventArgs e){}//事件方法private void buttonNoe_Click(object sender, EventArgs e){//sender表示当前控件的对象//Button btn = sender as Button;Button btn = (Button)sender;MessageBox.Show("btnclick");//选中单选框this.checkBox1.Checked = true;//我们也可以动态的取消事件的关联//this.button1.Click -= new System.EventHandler(this.buttonNoe_Click);}//窗体所有控件和初始化完毕后要执行的事件,我们通常不用private void Form1_Load(object sender, EventArgs e){//不建议在这里写初始化内容}//窗体关闭之前发生的private void Form1_FormClosing(object sender, FormClosingEventArgs e){if ((MessageBox.Show("确定关闭吗", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)){e.Cancel = false;}else{//不关闭窗体e.Cancel = true;}}//窗体关闭后发生的private void Form1_FormClosed(object sender, FormClosedEventArgs e){// MessageBox.Show("窗体关闭了","",MessageBoxButtons.OK);}//private void button1_MouseEnter(object sender, EventArgs e)//{//    Button btn = sender as Button;//    //tag属性可以随便写值//    btn.Tag = "btn1";//    MessageBox.Show(btn.Tag.ToString());//}//关闭窗体private void button2_Click(object sender, EventArgs e){this.Close();}private void label1_Click(object sender, EventArgs e){Label label = (Label)sender;label.Text = "1";}private void button3_6_Click(object sender, EventArgs e){Button button = (Button)sender;Clacklist.Add(button.Tag.ToString());//bindingSource.DataSource = Clacklist;MessageBox.Show($"{Clacklist[0].ToString()}");RefreshGridView();}private void button7_Click(object sender, EventArgs e){Clacklist.Clear();RefreshGridView();}}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace client_sideUI
{public partial class Exercise : Form{//实体类class Coure{public int Coureid { get; set; }public string CoureName { get; set; }//public String CoureHour { get; set; }}private List<Coure> ts = new List<Coure>();public Exercise(){InitializeComponent();int i = 0;foreach (Control control in this.groupBox1.Controls){//if(control is Button)//通过控件类型过滤我们不需要的控件//{//    Button button = control as Button;//    if (button.Text != "保存")//    {//        button.Tag = button.Text + $"{i}";//        button.Click += new System.EventHandler(this.btn_Click);//    }//}string originalText = control.Text;string textWithoutLastChar = originalText.Remove(originalText.Length - 1);if (control is Button && control.Text.ToString() != "保存"){// control.Tag = control.Text + $"{i}";control.Click += new System.EventHandler(this.btn_Click);string newText = textWithoutLastChar + $"{i}";control.Text = newText;}i++;}}//事件集中处理方法private void btn_Click(object sender, EventArgs e){Button btn = sender as Button;//MessageBox.Show(btn.Tag.ToString());//btn.BackColor = Color.AliceBlue;//将当前课程信息封装到课程对象,并将课程对象封装到列表中this.ts.Add(new Coure{CoureName = btn.Text,Coureid = Convert.ToInt32(btn.Text.ToString().Substring(btn.Text.Length - 1))});//改变当前按钮的背景色btn.BackColor = Color.Green;}//保存课程private void button13_Click(object sender, EventArgs e){foreach(var item in ts){//MessageBox.Show($"{item.CoureName}" +$"{item.Coureid}");Console.WriteLine($"{item.CoureName}" +"----"+$"{item.Coureid}");}}}}

相关文章:

C#笔记(5)

一、winform项目与窗体控件 1、部分类的使用 好处&#xff1a;让自动生成的代码后置&#xff0c;我们编写程序的代码显得更加简洁 特点&#xff1a;在最后编译的时候&#xff0c;仍然编译成一个窗体类。 窗体和控件的基本使用 3、Event事件&#xff08;委托--》事件&#…...

【软件国产化】| Windows和Linux下文件名后缀是否区分大小写

今天在开发过程中遇到了个软件在Linux系统和Windows系统下功能表现不一致的bug&#xff0c;具体表现为&#xff1a; 插入一张图片&#xff08;A文件夹中的001.jpg&#xff09;&#xff0c;然后使用“图片替换”功能&#xff0c;用B文件夹中的图片&#xff08;B文件夹中的001.JP…...

讨论JAVA、JVM与Spring

Q1: 作为一个JAVA开发人员&#xff0c;对于jvm肯定不陌生&#xff0c;但很多人对它不陌生也仅止于概念上&#xff0c;而且对概念也是模糊不清的&#xff0c;但jvm实际是java程序运行在其中的实际存在的环境&#xff0c;对它的理解应该要是具象化的。 我们还是从一项技术产生的…...

【04】MySQL数据库和数据表的基本操作详解与实例

文章目录 一、连接MySQL服务器二、数据库的基本操作2.1数据库的基本操作1. 创建数据库2. 选择数据库3. 删除数据库4.查询所有数据库5.修改数据库的字符集 2.2 数据表的基本操作1. 创建数据表2. 查看数据表结构3. 删除数据表4. 修改数据表5. 插入数据6. 查询数据7. 更新数据8. 删…...

Spring中实现动态数据源切换,基于AbstractRoutingDataSource

背景 在项目开发过程中&#xff0c;我们可能会遇到一个场景&#xff1a;某个类型数据源有多个数据源实例&#xff0c;需要我们按照不同的请求切换到不同数据源去。 而目前绝大多数java应用都是基于Spring框架来开发&#xff0c;我们很多时候相关的数据源连接都是交给了Spring框…...

StarRocks-join优化

1、背景 有两个大表&#xff0c;都是6kw级别上下的&#xff0c;通过SR然后包装了一个接口对外提供查询&#xff0c;当前的问题是&#xff0c;这样大的join查询会导致BE直接宕机。并且这个sql很有代表性&#xff0c;我截图如下&#xff1a; 这个表是个单分区&#xff0c;所以直接…...

js 高亮文本中包含的关键词标红

在开发中&#xff0c;遇到需要将文本中包含的关键字高亮的情况&#xff0c;可以做以下处理。 <div class"title"v-html"highlightKeywords(item.title, state1.tags1.concat(state2.tags2).concat(state3.tags3))"> </div> ...... ...... con…...

DVWA靶场——File Inclusion

File Inclusion&#xff08;文件包含&#xff09;漏洞 指攻击者通过恶意构造输入&#xff0c;利用应用程序错误的文件包含机制&#xff0c;导致程序包含并执行未经授权的本地或远程文件。这类漏洞广泛存在于Web应用程序中&#xff0c;尤其是在那些允许用户提供文件路径或URL的地…...

Android Framework禁止弹出当前VOLTE不可用的提示窗口

文章目录 VoLTE简介VoLTE 的优势 当前VOLTE不可用的弹窗弹窗代码定位屏蔽弹出窗口 VoLTE简介 VoLTE&#xff08;Voice over LTE&#xff09;是一种基于4G LTE网络的语音通话技术。它允许用户在4G网络上进行高质量的语音通话和视频通话&#xff0c;而不需要回落到2G或3G网络。V…...

OceanBase 大数据量导入(obloader)

现需要将源数据库&#xff08;Oracle|MySQL等&#xff09;一些表的海量数据迁移到目标数据库 OceanBase 中&#xff0c;基于常规 jdbc 驱动编码的方式涉及开发工作&#xff0c;性能效率也要看编码的处理机制。 OceanBase 官方提供了的 OceanBase Migration Service (OMS) 数据…...

w058基于web的美发门店管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0…...

实时数据开发 | checkpoints监控和调优

监控Checkpoints 监控 checkpoint 行为最简单的方法是通过 UI 的 checkpoint 部分。 监控这两个指标: 算子收到第一个 checkpoint barrier 的时间。当触发 checkpoint 的耗费时间一直很高时&#xff0c;这意味着 checkpoint barrier 需要很长时间才能从 source 到达 operator…...

el-tree的使用及控制全选、反选、获取选中

el-tree的使用及控制全选、反选、获取选中 组件使用获取选中的id全选实现反选实现全部代码 组件使用 引入组件&#xff0c;可以参考官网组件引入参考官网示例写好基础数据结构&#xff0c;不知道怎么转换树形机构的看文章&#xff1a;一维数组转树形 <template><el-…...

机器学习(二十五):决策树算法以及决策树和神经网络的对比

一、决策树集合 单一决策树会对训练数据的变化很敏感。例子&#xff1a;输入十个数据&#xff0c;判断是否是猫。只替换其中一个数据&#xff0c;信息增益最高的分裂特征就发生了改变&#xff0c;决策树就发生了变化。 使用决策树集合可以使算法更加健壮。例子&#xff1a;使用…...

新版布谷直播软件源码开发搭建功能更新明细

即将步入2025年也就是山东布谷科技专注直播系统开发,直播软件源码出售开发搭建等业务第9年,山东布谷科技不断更新直播软件功能&#xff0c;以适应当前新市场环境下的新要求。山东布谷科技始终秉承初心&#xff0c;做一款符合广大客户需求的直播系统软件。支持广大客户提交更多个…...

vue3 reactive响应式实现源码

Vue 3 的 reactive 是基于 JavaScript 的 Proxy 实现的&#xff0c;因此它通过代理机制来拦截对象的操作&#xff0c;从而实现响应式数据的追踪。下面是 Vue 3 的 reactive 源码简化版。 Vue 3 reactive 源码简化版 首先&#xff0c;我们需要了解 reactive 是如何工作的&…...

git的使用(简洁版)

什么是 Git&#xff1f; Git 是一个分布式版本控制系统 (DVCS)&#xff0c;用于跟踪文件的更改并协调多人之间的工作。它由 Linus Torvalds 在 2005 年创建&#xff0c;最初是为了管理 Linux 内核的开发。Git 的主要目标是提供高效、易用的版本控制工具&#xff0c;使得开发者…...

使用命令行创建 Maven 项目

本指南将引导您通过命令行创建一个简单的 Maven 项目。本教程假设您已经在您的机器上安装了 Maven 和 JDK 21。 第一步&#xff1a;验证 Maven 和 Java 安装 在开始之前&#xff0c;我们需要验证 Maven 和 Java 是否已正确安装在您的系统上。 验证 Maven 安装 打开命令行终…...

JVM_栈详解一

1、栈的存储单位 **栈中存储什么&#xff1f;**&#xff0c; 每个线程都有自己的栈&#xff0c;栈中的数据都是以栈帧&#xff08;Stack Frame&#xff09;的格式存在。在这个线程上正在执行的每个方法都各自对应一个栈帧&#xff08;Stack Frame&#xff09;。 栈帧是一个内存…...

Linux 金仓数据库安装和使用

文章目录 Linux 金仓数据库安装和简单使用 一、下载二、安装三、启动法1. 通用启动方式法2. 系统服务启动方式 四、测试五、DB管理工具1. 启动DB管理工具2. DB管理工具的常用功能 六、卸载 Linux 金仓数据库安装和简单使用 一、下载 打开官网 https://www.kingbase.com.cn/xzz…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

简单聊下阿里云DNS劫持事件

阿里云域名被DNS劫持事件 事件总结 根据ICANN规则&#xff0c;域名注册商&#xff08;Verisign&#xff09;认定aliyuncs.com域名下的部分网站被用于非法活动&#xff08;如传播恶意软件&#xff09;&#xff1b;顶级域名DNS服务器将aliyuncs.com域名的DNS记录统一解析到shado…...

机器学习复习3--模型评估

误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为&#xff1a;误差&#xff08;error&#xff09;。 误差定义&#xff1a; ①在训练集上的误差称为训练误差&#xff08;training error&#xff09;或经验误差&#xff08;empirical error&#x…...