Access textbox from another class
我想从另一个类访问文本框。
应使用
所以,在我的应用程序中的任何地方,我都想使用
1 2 3 4 |
我将Tabbx1的修改器设置为公共,以便从AdLogo调用它。当我调用这个函数时,什么也不会发生,在ToBox1中什么都不会显示出来…
我已经搜索过了,但没有发现什么能真正帮到我。
试试这个——
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | public partial class Form1 : Form { Log log; public Form1() { InitializeComponent(); log = new Log(richTextBox1); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { log.AddLog(DateTime.Now.ToString()); } private void button2_Click(object sender, EventArgs e) { log.AddLog(); } } public class Log { RichTextBox rtb; public Log(RichTextBox rtb) { this.rtb = rtb; } public void AddLog(string msg) { rtb.Text += msg + Environment.NewLine; } public void AddLog() { rtb.Text += DateTime.Now.ToString() + Environment.NewLine; } } |
这样就可以了。需要传递要修改的对象的引用。
当前代码的结构方式是,每次调用
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Log { private Form1 _form; public Log(Form1 formToUpdate) { _form = formToUpdate; } public void AddLog(string s) { _form.richTextBox1.Text += Environment.NewLine + s; } } |
但是现在您的日志类绑定到一个非常特定的表单,并且它直接与表单上不属于自己的特定UI控件混淆。这是非常糟糕的设计。
更好的方法是让日志类引发
您需要了解引用、实例、构造函数等的基础知识。
1 |
意味着在窗体中创建新的ReXTrimeBox,而不是当前ReXTrimBox1。
应该是1 2 3 4 | public void AddLog(string s) { this.richTextBox1.Text += Environment.NewLine + s; } |