问题如下:
选择Form1中要修改的值,点按钮呼出Form2,在Form2中修改其值.
实现的方法有很多.我觉得使用委托是最简单的.
代码如下:
Form1
然后button1按钮的Click事件将实例化Form2并将Form2中委托ul关联方法Updata(string s),此方法对ListBox中选择的值进行修改.
Form2:
以上为所有实现代码.通过此例可以联想到许多地方都能用委托来简单实现.
源码:
/Files/wllyy189/Test.rar
选择Form1中要修改的值,点按钮呼出Form2,在Form2中修改其值.
实现的方法有很多.我觉得使用委托是最简单的.
代码如下:
Form1
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Test
{
//定义一个委托
public delegate void UpdataList(string str);
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
/// <summary>
/// 弹出form2窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
f2.Str=this.listBox1.SelectedItem.ToString();
//为窗体2中的委托ul关联方法
f2.ul = new UpdataList(Updata);
f2.Show();
}
//此方法修改选中项的值
void Updata(string s)
{
this.listBox1.Items[this.listBox1.SelectedIndex] = s;
}
}
}
首先在Form1外面声明一个public delegate void UpdataList(string str) 委托名UpdataList 它所能关联的方法是没有返回值void能接受的参数为string类型.using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace Test
{
//定义一个委托
public delegate void UpdataList(string str);
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
/// <summary>
/// 弹出form2窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
f2.Str=this.listBox1.SelectedItem.ToString();
//为窗体2中的委托ul关联方法
f2.ul = new UpdataList(Updata);
f2.Show();
}
//此方法修改选中项的值
void Updata(string s)
{
this.listBox1.Items[this.listBox1.SelectedIndex] = s;
}
}
}
然后button1按钮的Click事件将实例化Form2并将Form2中委托ul关联方法Updata(string s),此方法对ListBox中选择的值进行修改.
Form2:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Test
{
/// <summary>
/// Form2 的摘要说明。
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private string str;
public string Str
{
get
{
return str;
}
set
{
str = value;
}
}
public UpdataList ul;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 窗体加载获得值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Load(object sender, System.EventArgs e)
{
this.textBox1.Text = this.Str;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
ul(this.textBox1.Text.ToString());
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace Test
{
/// <summary>
/// Form2 的摘要说明。
/// </summary>
public class Form2 : System.Windows.Forms.Form
{
private string str;
public string Str
{
get
{
return str;
}
set
{
str = value;
}
}
public UpdataList ul;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 窗体加载获得值
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form2_Load(object sender, System.EventArgs e)
{
this.textBox1.Text = this.Str;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, System.EventArgs e)
{
ul(this.textBox1.Text.ToString());
}
}
}
以上为所有实现代码.通过此例可以联想到许多地方都能用委托来简单实现.
源码:
/Files/wllyy189/Test.rar