gpt4 book ai didi

c# - 来自不同类的 Feed listBox c#

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:28 27 4
gpt4 key购买 nike

一些初学者在谷歌搜索 2 小时后提出问题。

我有一个名为 GUI 的 WindowsForm,带有一个列表框项(它不必是一个列表框)

我想要实现的是在 GUI 中有一个框,从我的项目文本中的每个类发送到该框。

例子:在 Programm.cs 中,我只想编写类似这样的内容 GUI.WriteToLog("Hello World");它应该出现在那个框中。

这个 GUI.WriteToLog 应该适用于每个类。

我试图在 GUI 类中编写一个静态函数 WriteToLog,但如果它是静态的,我就不能在该函数中使用 listBox1。

    public partial class GUI : Form
{
public void WriteToLog(string msg)
{


listBox1.Items.Add(msg);

}
}

这里是应该访问框的类:

    class FileManager
{

internal static void RenameFiles(string filePath)
{
GUI g = new GUI();
g.WriteToLog("Moving Files");
try {
File.Move(filePath, filePath + ".RDY");
}
catch (Exception e)
{
string message = e.ToString();
string caption = "Error";
MessageBox.Show(message, caption);
}

}

编辑:

更多详细信息我想做什么:我必须从我所有的类中访问 ListBox,因为它应该通知状态。经过更多的谷歌搜索。我发现最好的方法是编写一个事件?我这样对吗?我该怎么做?我想要的示例:带有 ListBox 的 GUI ...我在类“FileManager”功能“RenameFile”中我想写一行到 ListBox“嘿,我现在正在重命名文件”或者我在类“Communicator”在函数“SendEmail”中,所以我想在列表框中添加一行“嘿伙计,我正在发送一封很棒的电子邮件”......

最佳答案

当您调用方法 RenameFiles 时,您创建了一个名为 GUI 的类的新实例。所以你没有使用相同的表单。
您可以在创建 GUI 类时使用依赖项注入(inject)来修复代码,这样 FileManager 无需创建新类即可访问。通过将类似这样的内容添加到 FileManager 并在创建 GUI 时调用 setter。

private GUI gui;
public void SetGUI(GUI g)
{
this.gui = g;
}

关于c# - 来自不同类的 Feed listBox c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837182/

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