フォーム間をスクロールしているときに値を保持することに問題があります。2 つの Windows フォームがあります。1 つは Main で、もう 1 つは NewUser です。
メイン画面で [ユーザーの変更]ボタンをクリックすると、次のようになります。
NewUser yk = new NewUser();
yk.ShowDialog();
NewUser フォームが読み込まれると:
private void NewUser_Load(object sender, EventArgs e)
{
if (impersonatedUser == null)
{
txtNewUserName.Select();
return;
}
btnRevert.Enabled = true; //user may revert back to the old user
btnLogon.Enabled = false;
txtNewUserName.Enabled = false;
txtPassword.Enabled = false;
btnRevert.Select();
}
元に戻す:
private void btnRevert_Click(object sender, EventArgs e)
{
// revert to previous user
impersonatedUser.Undo();
btnRevert.Enabled = false;
btnLogon.Enabled = true;
}
ユーザーを偽装した後、ユーザーに戻すことができますが、フォームを閉じてメインの [ユーザーの変更] ボタンをクリックしてユーザーを元に戻すと、このセッションでは既に偽装されていると予想されるため、impersonatedUser は null ではなく、btnRevert.enabled = true; しかし、すべては新しいフォームを作成することから始まります。したがって、元に戻すことはできません NewForm で変数を失いたくない場合はどうすればよいですか? this.Close()などの代わりにthis.Visible = falseを使用する必要がありますか? ちなみに私は偽装で何の問題もありません。