gpt4 book ai didi

c# - 从一个..函数填充一个列表框?

转载 作者:行者123 更新时间:2023-11-30 14:42:45 25 4
gpt4 key购买 nike

首先我是 C# 的新手

我正在尝试在 C# winforms 应用程序中做这样的事情

当我的应用程序启动时,系统托盘中的表单开始最小化。当我双击它时,它会打开并向 qpid 代理发送请求以获取一些信息。然后发回一条消息,并在我的应用程序的监听器中接收到(我不确定代码是否相关,但无论如何我都会发布)

namespace MyApp
{
public class MyListener : IMessageListener
{
public void MessageTransfer(IMessage m)
{
//do stuff with m
}
}
}

我想做的是用在该函数中收到的消息填充该表单中的列表框,但我不知道如何从 MessageTransfer 函数与该特定表单通信

最佳答案

我建议您的听众不知道如何呈现消息。相反,公开一个表单可以监听的事件:

// event args class for transmitting the message in the event
public class MessageEventArgs : EventArgs
{
public IMessage Message { get; private set; }

public MessageEventArgs(IMessage message)
{
Message = message;
}
}

在你的监听类中:

public class MyListener : IMessageListener
{
public event EventHandler<MessageEventArgs> MessageReceived;

public void MessageTransfer(IMessage m)
{
OnMessageReceived(new MessageEventArgs(m));
}

protected void OnMessageReceived(MessageEventArgs e)
{
EventHandler<MessageEventArgs> temp = MessageReceived;
if (temp != null)
{
temp(this, e);
}
}
}

现在您可以在表单中添加事件监听器,并将消息信息添加到列表框或您喜欢的任何其他类型的控件中。

更新
下面是一个关于如何在表单中连接事件处理程序的示例。此代码做出两个假设:

  • 事件MessageReceived定义在IMessageListener接口(interface)
  • IMessage 接口(interface)有一个名为 Text 的属性。

代码示例:

public partial class MainUI : Form
{
private IMessageListener _messageListener;

public MainUI()
{
InitializeComponent();
_messageListener = new MyListener();
_messageListener.MessageReceived += MessageListener_MessageReceived;
}

void MessageListener_MessageReceived(object sender, MessageEventArgs e)
{
_messageListBox.Items.Add(e.Message.Text);
}

}

关于c# - 从一个..函数填充一个列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847123/

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