我对c#委托的浅见 使用情景- 两个窗体间的调用操作
2016-11-17 09:14
225 查看
开始学习委托,对委托不能理解。仅限于阅读书本上的例子,置于什么时候用委托,怎么用,心里一直不解。机缘巧合,阅读了博友的文章,地址
http://blog.csdn.net/qiujialongjjj/article/details/8229308
有点感悟。自己试着写了个类似的。希望高手们指教。
目的是实现,点击form1上按钮,隐藏form1,然后点击form2上的按钮,让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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var f2 = new Form2();
//方法 1 事件 f2.changed += new Form2.form2Handle(changeShowOrHide);
f2.f2handle = new Form2.form2Handle(changeShowOrHide); //方法 2 委托
f2.f2changeBtnTextHandle = changeBtnText;
f2.Show();
}
public static int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
if (count%2==0)
{
changeShowOrHide(true);
}
else
{
changeShowOrHide(false);
}
}
private void changeShowOrHide(bool isshow)
{
if (isshow)
{
this.Show();
}
else
{
this.Hide();
}
}
private void changeBtnText(string st)
{
button1.Text = st;
}
}
}
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 WindowsFormsApplication1
{
public partial class Form2 : Form
{
public delegate void form2Handle(bool b);
public delegate void changeBtnTextHandle(string text);
//方法 1 事件 public event form2Handle changed;
public form2Handle f2handle;//方法 2 委托
public changeBtnTextHandle f2changeBtnTextHandle;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//方法 1 事件 changed(true);
f2handle(true);//方法 2 委托
f2changeBtnTextHandle("隐藏");
Form1.count++;
}
}
}
这应该是委托的一种使用场景。还有什么场景使用,希望大侠不吝赐教!!!
http://blog.csdn.net/qiujialongjjj/article/details/8229308
有点感悟。自己试着写了个类似的。希望高手们指教。
目的是实现,点击form1上按钮,隐藏form1,然后点击form2上的按钮,让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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var f2 = new Form2();
//方法 1 事件 f2.changed += new Form2.form2Handle(changeShowOrHide);
f2.f2handle = new Form2.form2Handle(changeShowOrHide); //方法 2 委托
f2.f2changeBtnTextHandle = changeBtnText;
f2.Show();
}
public static int count = 0;
private void button1_Click(object sender, EventArgs e)
{
count++;
if (count%2==0)
{
changeShowOrHide(true);
}
else
{
changeShowOrHide(false);
}
}
private void changeShowOrHide(bool isshow)
{
if (isshow)
{
this.Show();
}
else
{
this.Hide();
}
}
private void changeBtnText(string st)
{
button1.Text = st;
}
}
}
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 WindowsFormsApplication1
{
public partial class Form2 : Form
{
public delegate void form2Handle(bool b);
public delegate void changeBtnTextHandle(string text);
//方法 1 事件 public event form2Handle changed;
public form2Handle f2handle;//方法 2 委托
public changeBtnTextHandle f2changeBtnTextHandle;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//方法 1 事件 changed(true);
f2handle(true);//方法 2 委托
f2changeBtnTextHandle("隐藏");
Form1.count++;
}
}
}
这应该是委托的一种使用场景。还有什么场景使用,希望大侠不吝赐教!!!
相关文章推荐
- c#委托使用 子窗体、父窗体、同级窗体 相互调用函数
- 如何在VB中操作EXCEL(一段代码,两个可以使用的过程)
- 利用System.EventHandler来实现两个窗体间的事件调用
- domino中NotesRegistration和NotesAdministrationProcess两个类的使用心得,个人浅见,水平有限。
- 利用System.EventHandler来实现两个窗体间的事件调用
- 如何使用最少的代码为你的窗体有效地提供剪贴板的相关操作
- 在WinFrom应用中,如果使用后台线程来操作界面应调用Control.Invoke()方法
- 利用System.EventHandler来实现两个窗体间的事件调用
- [转]c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)
- 查询操作、存储过程、函数调用中使用行处理器-bboss persistent框架行处理器使用
- excel窗体工具栏上的按钮在操作过程中变成灰色,不能使用
- [翻译] Scott Mitchell 的ASP.NET 2.0数据操作教程之八:使用两个DropDownList过滤的主/从报表
- 利用System.EventHandler来实现两个窗体间的事件调用
- Scott Mitchell 的ASP.NET 2.0数据操作教程之八:使用两个DropDownList过滤的主/从报表
- domino中NotesRegistration和NotesAdministrationProcess两个类的使用心得,个人浅见,水平有限。
- 利用System.EventHandler来实现两个窗体间的事件调用
- Windows中操作窗体的两个API
- 使用事件和委托再两个窗体之间传递数据
- c#有关winform的两个代码片段(多线程操作窗体控件与窗体淡入淡出效果)
- 在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操作。(以解决)