如何使textbox1.Text和我的frmMain實例的其他字段可見?
在C#窗體中,控件默認爲private
。要更改訪問修飾符,你可以像下面更改:
右鍵單擊控件>屬性>更改下拉列表如下圖所示
我將其更改爲internal
,沒有必要在你的情況下公開。
這意味着控件所在類(frmMain)以外的類可以訪問該控件。但是你的班級需要參考frmMain
,所以它可以訪問frmMain
的控件。要做到這一點,您可以通過以下方式做到這一點:
選項1
您可以通過frmMain
參考的構造函數的類:
public class SomeClass
{
private frmMain someForm;
public SomeClass(frmMain someForm)
{
this.frmMain = someForm;
// Now you can do this
var ctrl = this.frmMain.WhateverControlYouNeedToAccess;
string controlText = ctrl.Text; //assuming it has Text property
}
}
在創建SomeClass
的,將您的表單傳遞給它:
// this reference to the current instance
// this code will be in your form
SomeClass some = new SomeClass(this);
選項2
在你的班上有一個屬性,因此它是可設置從外面是這樣的:
public class SomeClass
{
public frmMain SomeForm { get; set; }
}
你會這樣設置屬性:
SomeClass some = new SomeClass();
some.SomeForm = this;
選項3
只給班級最低限度的需求。你不需要給它一個參考整體形式,但只有一個控制(或更多),然後專門通過控制這樣的:
SomeClass some = new SomeClass();
some.PictureBoxA = this.pictureBox1;
some.Button1 = this.button1;
對於這個工作,你的類必須具有的屬性,以上。所以,你的類將有這類似:
public class SomeClass
{
public PictureBox PictureBoxA { get; set; }
public Button Button1 { get; set; }
}
您是否將修飾符更改爲public TextBox1控件?另外,你有一個frmMain或單身frmMain的靜態實例嗎?這樣做應該可行。 – Nathangrad
目前,如果您在交換方法中放置'MessageBox.Show(「some message」);'是否顯示帶有「某條消息」消息的消息框? –
@ChetanRanpariya是的。 – AchiPapakon