[英]Accessing Form's Control from another class C#
我是c#和visual studio的新手,但不是一般的編程。 我在3天內搜索了我的問題的答案,我發現了很多,但是出於一些奇怪的原因(我確定我錯過了一些非常明顯的東西)我無法讓它發揮作用。 我認為這是像我這樣的新手問題。 我有一個表單(Form3),帶有一個文本框和一個按鈕(我設置它只是為了測試目的)。 我想從另一個類填充和閱讀此文本框。 我知道最合適的方法是使用GET和SET訪問器在Form3.cs中創建一個屬性。 我做到了但我無法讓它發揮作用。 我沒有收到任何錯誤消息,但我也無法設置文本框的值。 它只是空白。 這是我的示例代碼:
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public string setCodes
{
get { return test1.Text; }
set { test1.Text = value; }
}
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{ }
private void button1_Click(object sender, EventArgs e)
{
a.b();
}
}
public class a
{
public static void b()
{
Form3 v = new Form3();
v.setCodes = "abc123";
}
}
}
有人可以幫我解決這個問題嗎?
問題是您正在將值設置為表單的新實例。 嘗試這樣的事情:
public partial class Form3 : Form {
public string setCodes
{
get { return test1.Text; }
set { test1.Text = value; }
}
private A a;
public Form3()
{
InitializeComponent();
a = new A(this);
}
private void button1_Click(object sender, EventArgs e)
{
a.b();
}
private void Form3_Load(object sender, EventArgs e)
{
}
}
public class A
{
private Form3 v;
public a(Form3 v)
{
this.v = v;
}
public void b()
{
v.setCodes = "abc123";
}
}
您正在創建一個new Form3()
實例。
這不會影響現有表格。
您需要將表單作為參數傳遞給方法。
嘗試這個:
public partial class Form3 : Form
{
/* Code from question unchanged until `button1_Click` */
private void button1_Click(object sender, EventArgs e)
{
a.b(this);
}
}
public class a
{
public static void b(Form3 form3)
{
form3.setCodes = "abc123";
}
}
這會將表單的當前實例傳遞給另一個類,以便它可以更新setCodes
屬性。 以前,您正在創建新的表單實例,而不是更新當前表單。
將表單實例發送到其他其他類
Form1 objForm1=new Form1();
obj.Validate(objForm1);
通過在窗體中修改控件Private
為Public
(Designer.cs),輕松訪問另一個類中的控件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.