gpt4 book ai didi

c# - 通过调用另一个类的函数将数据传递给非静态列表框

转载 作者:行者123 更新时间:2023-11-30 22:46:40 24 4
gpt4 key购买 nike

我有一个简单的表单程序,我已经用了一段时间了。我只是希望能够从不同的类文件调用一个方法(当在该类文件的代码中触发某个步骤时)以便在列表框中插入一个字符串。

这是我的主要方法,非常标准:

class Program
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}

这是驻留在我的 MainForm.cs 文件中的函数,我可以从该类文件中调用它(通过“TextToBox(myString);”):

public partial class MainForm : Form
{
...
// Function to output results to main Listbox window
public void TextToBox(string aString)
{
// Place messages in Main Display list box window
this.listBox1.Items.Insert(0, aString);
}
...
}

但我的问题是当我在另一个类(class)时我想调用“TextToBox(myString);”。如果我创建 MainForm 的另一个对象引用,代码可以正常编译,但列表框中不会显示任何内容。我该怎么做呢?我不能简单地使 TextToBox() 静态化。我知道我必须创建对象引用,但我不知道如何引用在 Main 方法中创建的原始 MainForm。提前致谢...

最佳答案

这会起作用,但前提是您只有一个 MainForm 实例。

public class MainForm : Form
{
public MainForm()
{
Instance = this;
}

public static MainForm Instance { get; private set; }

// Function to output results to main Listbox window
public void TextToBox(string aString)
{
// Place messages in Main Display list box window
this.listBox1.Items.Insert(0, aString);
}

}
public class Other
{
public void AddTextToListBox()
{
MainForm.Instance.TextToBox("Test");
}
}

...编辑...备选方案:

class Program
{
public static MainForm MainFormInstance;
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainFormInstance = new MainForm();
Application.Run(MainFormInstance);
}
}

public class Other
{
public void AddTextToListBox()
{
Program.MainFormInstance.TextToBox("Test");
}
}

关于c# - 通过调用另一个类的函数将数据传递给非静态列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com