C#学习笔记(31)——委托窗体传值
说明(2017-11-23 19:31:53):
1. 关于委托和窗体传值,一下午在网上查阅了大量资料,基本就是CSDN的论坛和博客园的文章,大家都在举例子,烧水、鸿门宴,看评论说还看到过沙漠足球的,真是跪了。。
2. 最后还是看一直了CZ杨洪波三层里的窗体传值,照着把代码写出来的,其实我第一次听说“窗体传值”这个概念,就是听得杨洪波讲的这个。
3. 最关键的一步,就是把字符串和方法,作为Form2的参数,传给Form2。
4. 虽然前面做了好几个委托的例子,也知道委托怎么写,但是这个传值就是不知道怎么写,一开始一直以为要把委托写在Form1里,谁知道是写在Form2里的!
5. 蒋坤是让写一个点击改变Form1的背景颜色,应该比窗体传值简单,或者说是一个套路,我试一下。
Form1:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace _07_窗体传值
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(tb1.Text, DoSth);
f2.Show();
}
//这个方法通过Form2的构造函数传过去
public void DoSth(string str)
{
tb1.Text = str;
} }
}
Form2:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace _07_窗体传值
{
//委托要定义在Form2里面
public delegate void MyDel(string str);
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent(); }
//声明一个委托变量,接收Form2传过来的委托
private MyDel _mdl;
//精髓就在于Form2的构造函数,把Form1的值和DoSth方法传到Form2里面,this是为了继承Form2窗体,省去了InitializeComponent()这一行
public Form2(string str, MyDel mydel)
: this()
{
tb2.Text = str;
this._mdl = mydel;
} private void button1_Click(object sender, EventArgs e)
{
//调用委托之前一定要判断委托是否为空
if (_mdl != null)
{
_mdl(tb2.Text);
this.Close();
}
} }
}
效果是这样婶儿的:
首先:

其次:

C#学习笔记(31)——委托窗体传值的更多相关文章
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- C#基础练习(使用委托窗体传值)
主界面: Form1中的代码: namespace _06委托练习_窗体传值 { public partial class Form1 : Form { public ...
- 《C# 语言学习笔记》——委托
委托是一种可以把引用存储为函数的类型. 委托的声明非常类似于函数,但不带函数体,且要使用delegate关键字.委托的声明制定了一个返回类型和一个参数列表. 在定义了委托后,就可以声明该委托类型的变量 ...
- Java学习笔记31(IO:Properties类)
Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...
- [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Winform 委托窗体传值
有窗体Form1和窗体Form2,单击Form1按钮弹出Form2,单击Form2吧Form2的textBox控件文本传给Form1的label控件. 窗体1里: 实例化Form2,注册Form2的事 ...
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同.
前言: C#委托是什么 c#中的委托可以理解为函数的一个包装, 它使得C#中的函数可以作为参数来被传递, 这在作用上相当于C++中的函数指针. C++用函数指针获取函数的入口地址, 然后通过这个指针 ...
- [C#学习笔记]Func委托与Action委托
学习一项新知识的时候,最好的方法就是去实践它. 前言 <CLR via C#>这本神书真的是太有意思了!好的我的前言就是这个. Fun 如果要用有输入参数,有返回值的委托,那么Func委托 ...
随机推荐
- Nodejs学习之mongodb Error: failed to connect to [localhost:27017]
在连接mongodb时出现以下错误提示信息 events.js: throw er; // Unhandled 'error' event ^ Error: failed to connect to ...
- 使用OutputStream向屏幕上输出内容
使用OutputStream向屏幕上输出内容 /** * 使用OutputStream向屏幕上输出内容 */ import java.io.*; class hello { public static ...
- 一个垃圾的Android权限框架
一个垃圾的Android权限框架 学习和参考 简书 https://www.jianshu.com/p/2324a2bdb3d4 写在前头 今天突发奇想想要把Android申请权限的流程封装一下,为使 ...
- Node+Express+MongoDB + Socket.io搭建实时聊天应用实战教程(三)--前后端环境配置
前言 之前都是介绍一些基础知识,在这一节,我们就要开始实战coding了.正所谓磨刀不误砍柴工,准备工作显得尤为重要.很多demo只是追求效果的实现,并不注重整个demo的架构性.从我个人的角度看来, ...
- Python中应用SQL及SQLAlchemy(一)
以SQLit3为例: import sqlite3 conn = sqlite3.connect('db.sqlite3') #获取游标对象 cur = conn.cursor() #执行一系列SQL ...
- 洛谷.3374.[模板]树状数组1(CDQ分治)
题目链接 简易CDQ分治教程 //每个操作分解为一个有序数对(t,p),即(时间,操作位置),时间默认有序,用CDQ分治处理第二维 //对于位置相同的操作 修改优先于查询 //时间是默认有序的 所以可 ...
- Python图形编程探索系列-06-按钮批量生产函数
设计任务 初步设计一个批量生产按钮的函数,根据需要的按钮数量,自动生成多少按钮. 函数设计 import tkinter as tk # 导入tkinter库 root = tk.Tk() # 建立程 ...
- 潭州课堂25班:Ph201805201 第十六课 正则 (课堂笔记)
import re 元字符: . ^ $ * + ? {} \ () # s = 'abcdefg' # s.find('c') # print(s.find('cd')) ## 查找 # b = s ...
- jsp下载word
<%@ page language="java" contentType="application/msword;charset=utf-8"%> ...
- java之静态方法与非静态方法
1.静态方法最大的特点就是,不用生成类的实例对象,直接可以用. 2.它的语法格式:<类名|实例名>.<类变量名> 3.Java中的静态方法中,在方法声明时前面要加static ...