リマインダー用の小さなアプリケーションを書いています。これについては、Stack Overflow の同様の質問と回答から大きな助けを得ました。こちらからThunderが言及したコードを使用しました。
関連するコードは次のとおりです。
private void Form1_Load(object sender, EventArgs e)
{
System.Threading.TimerCallback callback = new System.Threading.TimerCallback(ProcessTimerEvent);
var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day , 10, 0, 0);
if (DateTime.Now < dt)
{
var timer = new System.Threading.Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));
this.Hide(); // This line works... Form hides itself
}
}
private void ProcessTimerEvent(object obj)
{
//MessageBox.Show("Hi Its Time");
this.Show(); //This line does not work. Form gets disposed off instead of show
}
私の問題:その回答に記載されているすべてのものを取得します(MessageBoxを含む)。ただし、コールバックが行われたときにフォームを非表示にして、代わりにもう一度表示しようとすると、MessageBox.Show("Hi Its Time")
機能しません。各行の私のコメントを参照してください。フォームが破棄される理由がわかりません。
this.Visible() // does not work and disposed off the same way
また、場所のプロパティを変更して、フォームを画面外に移動しようとしました。返却時に元の場所に戻しますが、これも機能しません。戻ったときにフォームを非表示にして表示するにはどうすればよいですか?