C#类中访问窗体中的TEXTBOX。

orienteer 2017-11-16 05:02:07
代码如下:
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 WindowsFormsApplication1
{
public delegate string ProcessDelegate(string s1, string s2);

public delegate void settext(string str2);


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public void Writetext(string str)
{
if (this.textBox1.InvokeRequired)
{
this.textBox1.BeginInvoke(new settext(Writetext), str);
return;
}
textBox1.AppendText(str + Environment.NewLine);
}
private void button1_Click(object sender, EventArgs e)
{

/* 调用方法 */
Test t = new Test();
string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
string r3 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process3));
textBox1.Text = r1 + "|" + r2 + "|" + r3;

}
}



public class Test
{
public string Process(string s1, string s2, ProcessDelegate process)
{
return process(s1, s2);
}

public string Process1(string s1, string s2)
{
return s1 + s2;
}

public string Process2(string s1, string s2)
{
return s1 + Environment.NewLine + s2;
}

public string Process3(string s1, string s2)
{
return s2 + s1;
}

public string process4(string s2,string s3)
{
return s2 + s3 + "类访问窗体";

}
}
怎样在test类的process4函数中给TEXTBOX3.TEXT赋值 。
...全文
280 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mk_lucifer 2017-11-16
  • 打赏
  • 举报
回复
从基本语法开始,谁都不能一口吃个胖子,问这种问题的都是因为搞不懂什么 类,对象实例,引用的关系,什么叫做一切都是对象。。。 先学好基础语法,从使用控制台开始,窗口最大的问题就是工程隐藏了主窗口实例化的代码,让很多人误以为程序是从主窗口类开始的。。。 要解决这个问题,只要给Test类传一个参数,就是主窗口的引用,在构造Test的同时,给他一个 成员变量叫 Form1 form;

 class Test{
    public Form1 form;
     public string process4(string s2,string s3)
        {
            return s2 + s3 + form.TextBox1.Text;
        }
}

class Form1:Form
{
 private void button1_Click(object sender, EventArgs e)
        {

            /*  调用方法  */
            Test t = new Test();
            t.form=this;
            string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
            string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
            string r3 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process3));
            textBox1.Text = r1 + "|" + r2 + "|" + r3;
        }
}
在编程语言里,任何对象都没什么特殊性,TextBox是,Form也是,想要访问先传递引用参数。。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧