首先,我是C#的新手
我想在C#winforms应用程序中做这样的事情
当我的应用程序启动时,表单在系统托盘中最小化.当我双击它时,它会打开并向qpid代理发送一些请求以获取一些信息.然后发回一条消息,并在我的应用程序中的监听器中收到(我不确定代码是否相关,但无论如何我都会发布)
namespace MyApp
{
public class MyListener : IMessageListener
{
public void MessageTransfer(IMessage m)
{
//do stuff with m
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的是使用该函数中收到的消息填充该表单中的列表框,但我不知道如何从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;
}
}
Run Code Online (Sandbox Code Playgroud)
在你的监听器类中:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在表单中添加事件侦听器,并将消息信息添加到列表框或您喜欢的任何其他类型的控件中.
更新
以下是如何在表单中连接事件处理程序的示例.这段代码做了两个假设:
MessageReceived在IMessageListener界面中定义IMessage接口有一个名为的属性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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |