В графическом интерфейсе есть кнопка, которая отображает журнал событий, представляющий собой еще одну форму с расширенным текстовым полем.
Я делаю журнал событий, который сообщает пользователю, что происходит. Проблема в том, что я не знаю, почему обработчик событий, который я настроил, не запускается при изменении строки. В основном, эта форма имеет текстовое поле, и текстовое поле имеет строку, называемую «активность». К этой строке добавляются различные сообщения о состоянии и ошибках.
Однако, когда строка объединяется с другими сообщениями, событие не запускается и не обновляется автоматически. Я ищу обновления в режиме реального времени, когда происходят эти события. Прямо сейчас я могу закрыть форму, а затем снова открыть ее, чтобы она снова загрузила строку активности, и это работает, но может ли кто-нибудь пролить свет на то, почему событие, которое я настроил, не вызывается? Вот код:
Первый бит - это Новая форма, которую я запускаю. Второй бит - это класс со строковым действием.
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