GUI有一个显示事件日志的按钮,该日志只是具有丰富文本框的另一个表单。当字符串变量发生变化时事件未被触发
我正在做一个事件日志,告诉用户发生了什么事情。我遇到的问题是,我不知道为什么设置的事件处理程序在字符串更改时未被触发。基本上,这个表单有一个文本框,文本框被设置为一个名为'activity'的字符串。这个字符串被添加到关于状态和错误的各种消息中。
但是,当字符串与其他消息连接时,事件不会被触发,并且不会自动更新。我正在寻找这些事件发生时的实时更新。现在,我可以关闭表单,然后重新打开它来重新加载活动字符串,这很有效,但是有人可以告诉我为什么我设置的事件没有被触发?以下是代码: 第一位是我启动的新窗体。第二个位是具有字符串活动的类。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace StatusLog
{
public partial class StatusLogForm : Form
{
public StatusLogForm()
{
InitializeComponent();
}
private StatusLog statuslog = StatusLog.Instance;
private void StatusLogForm_Load(object sender, EventArgs e)
{
statuslog.ActivityChanged += new EventHandler(statuslog_ActivityChanged);
richTextBox1.Text = statuslog.Activity;
}
void statuslog_ActivityChanged(object sender, EventArgs e)
{
richTextBox1.Text = statuslog.Activity;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GDCanada.LCSS.VMF.ProtoVmf;
namespace StatusLog
{
public class StatusLog
{
private static StatusLog instance;
private StatusLog()
{
}
public static StatusLog Instance
{
get
{
if (instance == null)
{
instance = new StatusLog();
}
return instance;
}
}
public enum LogType
{
Error,
Status,
Information,
Warning,
}
public event System.EventHandler ActivityChanged;
private string activity = "Activity:";
public string Activity
{
get
{
return activity;
}
set
{
activity = value;
if (this.ActivityChanged != null)
{
this.ActivityChanged(this, new System.EventArgs());
}
}
}
void activitychanged(object sender, System.EventArgs e)
{
}
public void Log(string message, LogType type)
{
activity = activity + "\n" + type.ToString() + ": " + message;
}
}
}
我通过“日志”功能添加字符串。任何帮助非常感谢,谢谢! 如果我错过了任何信息,我很抱歉。如果需要,我会很乐意提供。
-tf.rz .NET 3.5 SP1
谢谢乔恩,总是一个救生员,但tafoo85击败你的答案,我虽然+1。 ^^ –
@ tf.rz:其实我认为我的回答是在tafoo85's之前17秒(将鼠标悬停在“XX分钟前回答”),但这不是问题:) –
LOL,那么。 = P –