在静态函数中引用TextBox时遇到问题。 给出一个想法,看看下面的代码: 我创建了一个MainForm,其中包含一个带有按钮和文本框的Windows窗体。 文本框中填充了字符串。 在下面的主类中,我使用CheckInput()作为主循环。从各种回调函数(按下按钮)调用此函数并正常工作。 在开发过程中,我需要从另一个类(InitForm)调用相同的函数。为此,我必须首先使用MainForm类名。要做到这一点,我还必须使用'静态' CheckInput()函数之前的关键字。但突然TextBox引用无法正常工作。给出了错误。为了解决这个问题,我创建了一个MainForm实例:
MainForm c = new MainForm();
if ( c.TextBox.Text != "")
{
DoSomeAction();
}
所有错误都消失了!
但.....在调试代码时,Textbox值消失了!在创建新实例时,似乎文本框值不是固有的。 如何获得原始文本框值?
约翰 主要课程
public class MainForm : Form
{
private int ………… some variables
// constructor
public MainForm ()
{
Init();
}
}
// Method
public static bool CheckInput()
{
if ( TextBox.Text != "")
{
DoSomeAction();
}
}
Another class
public class InitForm : Form
{
private int …………………….. some variables
// constructor
public InitForm()
{
Init();
}
// Method
private void Button_Click(object sender, FormClosedEventArgs e)
{
MainForm.CheckInput();
}
答案 0 :(得分:0)
为简洁起见,代码已经缩减。
public class MainForm : Form
{
public void DoSomething()
{
}
private void DisplaySecondForm()
{
using (var frm = new SecondForm(this))
{
frm.ShowDialog();
}
}
}
public class SecondForm : Form
{
private readonly MainForm _mainForm;
public SecondForm(MainForm mainForm)
{
_mainForm = mainForm;
}
private void InvokeSomeActionOnMainForm()
{
_mainForm.DoSomething();
}
}
我希望它有所帮助。