winform中 一个普通的类如何给Textbox赋值

大_爱 2013-07-16 03:41:47
RT
我在网上看到了很多窗体传值的方式,但是普通的类如何控制就不知道了。

我在 form中new了一个对象,让后把form传进去,但是也不能修改Textbox上的值啊。
...全文
907 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
ganrongzhong 2015-07-25
  • 打赏
  • 举报
回复
用委托方法 form1代码
        private void button1_Click(object sender, EventArgs e)
        {



            Form2 frm = new Form2();

            frm.FEventDelegate_AllFloorError += new Form2.FDelegate_AllFloorError(FEventDelegate_AllFloorError);
            frm.Show();
        }
        void FEventDelegate_AllFloorError(string ErrorMsg)
        {
            textBox1.Text = textBox1.Text + ErrorMsg;

        }
form2代码
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public delegate void FDelegate_AllFloorError(string ErrorMsg);
        public event FDelegate_AllFloorError FEventDelegate_AllFloorError;

        private void button1_Click(object sender, EventArgs e)
        {
            FEventDelegate_AllFloorError("abc"+"\r\n"); 
        }
    }
异常异长 2013-07-17
  • 打赏
  • 举报
回复
神一样的帖子
liug08 2013-07-16
  • 打赏
  • 举报
回复
学习了,支持一下
zjzhong 2013-07-16
  • 打赏
  • 举报
回复
哈哈,没有仔细看你的代码,这样的话,应该是编译不了,写代码码的时候就提示错了,根本不存在什么访问不到呀!
  • 打赏
  • 举报
回复
那....结贴给分吧
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 18 楼 vb763305825 的回复:
Class A{
private Form f;
public A (Form f){
this.f = f;
} 
public void otherFunl(){
f.Textbox.text = "xxx";//这样就不行。访问不到到Textbox
f.setText();//直接调用我在form中写的方法也不行。
}
}
Form 改成 Form1 改成你写的窗体的那个类名称
万分感谢!就是这个的错误了。
  • 打赏
  • 举报
回复
Class A{
private Form f;
public A (Form f){
this.f = f;
} 
public void otherFunl(){
f.Textbox.text = "xxx";//这样就不行。访问不到到Textbox
f.setText();//直接调用我在form中写的方法也不行。
}
}
Form 改成 Form1 改成你写的窗体的那个类名称
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 16 楼 zjzhong 的回复:
把窗体中的TextBox公开就可以了,或者在窗体公开一个方法去修改这个TextBox的Text值,或者公开一个属性去获取或设置这个TextBox的值就行了。 比如:在你的窗口中有一个TextBox的控件,名称为tbTest,那么可以通过以下方法设置: 1、public TextBox TbTest{ get{return this.tbTest;} } 2、public string TbTestStr{ get{return this.tbTest.Text;} set{this.tbTest.Text = value;} } 3、public void SetTestText(string text){ this.tbTest.Text = text; }
3、public void SetTestText(string text){ this.tbTest.Text = text; } 我就是这样的写的,但是还是访问不到。很奇怪
zjzhong 2013-07-16
  • 打赏
  • 举报
回复
把窗体中的TextBox公开就可以了,或者在窗体公开一个方法去修改这个TextBox的Text值,或者公开一个属性去获取或设置这个TextBox的值就行了。 比如:在你的窗口中有一个TextBox的控件,名称为tbTest,那么可以通过以下方法设置: 1、public TextBox TbTest{ get{return this.tbTest;} } 2、public string TbTestStr{ get{return this.tbTest.Text;} set{this.tbTest.Text = value;} } 3、public void SetTestText(string text){ this.tbTest.Text = text; }
lyx266 2013-07-16
  • 打赏
  • 举报
回复
form中默认控件都是private的 你把要textbox改成public 主要是在form中定义一个public的方法 然后通过方法来更改textbox的值
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 13 楼 vb763305825 的回复:
你把Textbox公开就行了,public
公开了。

 private System.Windows.Forms.Button button5;
        public System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button button6;
  • 打赏
  • 举报
回复
你把Textbox公开就行了,public
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 11 楼 vb763305825 的回复:
可以啊,这样的话你就在A类的构造函数里面写了
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            A a = new A(this);
        }        
    }

    class A
    {
        public A(Form1 from1)
        {
            from1.txtBox.Text = "Yes!";
        }
    }
我不想在构造器中对form 的Textbox赋值。 我在class A 中这样写的。

Class A{
private Form f;
public A (Form f){
this.f = f;
} 
public void otherFunl(){
f.Textbox.text = "xxx";//这样就不行。访问不到到Textbox
f.setText();//直接调用我在form中写的方法也不行。
}
}
  • 打赏
  • 举报
回复
可以啊,这样的话你就在A类的构造函数里面写了
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            A a = new A(this);
        }        
    }

    class A
    {
        public A(Form1 from1)
        {
            from1.txtBox.Text = "Yes!";
        }
    }
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 8 楼 vb763305825 的回复:
通过Set方法,窗体Form1把自己交给A类去操作,A喜欢怎么搞就怎么搞
我是通过构造器的方式传入的。 在form中,

A a = new A(this);
然后在A类中想修改Form中的Textbox。这样为什么不行啊?
ztszhq 2013-07-16
  • 打赏
  • 举报
回复
引用 5 楼 beefcattlexiaoyang 的回复:
[quote=引用 3 楼 u011096386 的回复:] button1就是 from 中的按钮啊 textBox1为form 中的文本框 楼主可否举个例子,具体的功能

public class A{
public void xxx(){
//我希望能在这里修改到form控件中的Textbox
}
}

[/quote] 我给你写的例子 就是你要的啊
  • 打赏
  • 举报
回复
通过Set方法,窗体Form1把自己交给A类去操作,A喜欢怎么搞就怎么搞
  • 打赏
  • 举报
回复
就是把窗体的实例传到A类的SetTxtBoxTest方法里面去,在方法内部对窗体的成员进行赋值,还有哪里不明白?
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 4 楼 vb763305825 的回复:
一个普通类给txtBox赋值
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            A a = new A();
            txtBox1.Text = a.TextString;
        }
    }

    class A
    {
        public string TextString
        {
            get { return "Yes"; }
        }
    }
new了一个对象,让后把form传进去
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            A a = new A();
            a.SetTxtBoxTest(this, "Yes");
        }        
    }

    class A
    {
        public void SetTxtBoxTest(Form1 form1,string Text)
        {
            form1.txtBox1.Text = Text;
        }
    }
不是太懂耶
大_爱 2013-07-16
  • 打赏
  • 举报
回复
引用 3 楼 u011096386 的回复:
button1就是 from 中的按钮啊 textBox1为form 中的文本框 楼主可否举个例子,具体的功能

public class A{
public void xxx(){
//我希望能在这里修改到form控件中的Textbox
}
}

加载更多回复(4)

111,120

社区成员

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

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

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