私は何らかの理由で私に困惑している非常に単純なプログラムを持っています。私はそれを置いて、今朝もう一度それに戻って来て、私はまだ困惑しています。まず、私はこれが理想的な解決策ではないことを認識しています。私は2つの形式:メインとログを持っています。メインフォームには、クリックするとList _debugLogに追加されるボタンがあります。 btnDebugをクリックすると、ログフォームが開き、_debugLogが渡されます。すべてが問題なく、タイマーがセットアップされ、実行され、すべて正常です。イベントlog.UpdateLog()は2.5秒ごとにトリガーされ、更新されたログでログ・フォームを更新します。ただし、mainFormLog.Countと_log.Countは常に同じで、btnAddをメインフォームでクリックすると増加します。 _logはtickイベントの新しい_debugLog(mainFormLog)をどのように持っていますか?なぜこれらの2つのリスト<string>には常に同じ数の項目が含まれていますか?
namespace Tool
{
public partial class Main : Form
{
private List<string> _debugLog = new List<string>();
public Main()
{
InitializeComponent();
}
private void btnAdd_Click(object sender, EventArgs e)
{
_debugLog.Add("message!");
}
private void btnDebug_Click(object sender, EventArgs e)
{
Log log = new Log(_debugLog);
log.Show();
Timer dt = new Timer();
dt.Interval = 2500;
dt.Enabled = true;
dt.Tick += delegate {
log.UpdateLog(_debugLog);
};
}
}
public partial class Log : Form
{
private List<string> _log;
public Log(List<string> log)
{
InitializeComponent();
_log = log;
}
public void UpdateLog(List<string> mainFormLog)
{
if (mainFormLog.Count > _log.Count)
{
MessageBox.Show("Log has been updated!");
}
else
{
MessageBox.Show("Nothing new!" + mainFormLog.Count.ToString() + "/" + _log.Count.ToString());
}
}
}
}
あなたはログのコンストラクタに_debugLogを渡します。それが理由です –
もう少し説明できますか?私はコンストラクタで渡しますが、決して再度は行いません。 _logはどのように更新を続けますか? – Scott
ダウン投票は何ですか?それは完全に有効な質問です。 –