跨窗体相当于跨线程了,并不能直接调用
可以利用委托来实现
现在有两个窗体,form1和form2,form1中有一个textbox,form2中有一个button,要实现的功能是按下按钮改变textbox里的text
实现方法:
1.首先声明一个全局委托, public delegate void SetText();
2.在form2中实例化该委托:public SetText setText;
3.在form1中添加改变textbox里text的方法,
pubic void ChangeText()
{
textBox.Text = "变了吧!";
}
4.在form1中将上诉方法注册到form2中的委托实例
f2.setText += new SetText(ChangeText);
5. 在f2中运行委托实例。
以上5步的执行顺序不能错,要是没注册方法就执行委托,那必然是会出错的
form1代码:
using System;
using System.Windows.Forms;
namespace test
{
//定义一个全局委托
public delegate void SetText();
public partial class Form1 : Form
{
Form2 f2 = new Form2();
public Form1()
{
InitializeComponent();
//显示两个form
f2.Show();
//给form2中的委托实例注册方法
f2.setText += new SetTe

本文介绍了如何在C#中处理跨窗体控件调用的问题,强调了由于跨线程操作的限制,不能直接调用。通过详细步骤,展示了利用委托来实现在Form2中点击按钮改变Form1中TextBox文本的方法,包括声明委托、实例化、定义方法、注册方法和执行委托等关键步骤。
最低0.47元/天 解锁文章
1092

被折叠的 条评论
为什么被折叠?



