C#複数のTextBoxの検証

sstrickland

1ページにいくつかのTextBoxがあります。テキストボックスの値は、作成されたレジストリキーから取得されます。ユーザーがレジストリの値を更新するために押すことができる更新ボタンがあります。1つまたは複数のテキストボックスの値を変更した場合に、変更したテキストボックスの横にエラープロバイダーが表示されるように、機能を追加する必要があります。すべてのテキストボックスにコードを記述できることはわかっていますが、それは面倒で長くなります。foreachループを使用する方法はありますか?

private void tabPage1_Enter(object sender, EventArgs e)
    {

        //            Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon";ValueType: string; ValueName: "AutoAdminLogon"; ValueData: "1";Check: IsWin64
        //          Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon";ValueType: string; ValueName: "DefaultUserName"; ValueData: "mydealerlot";Check: IsWin64
        //        Root: HKLM64; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon";ValueType: string; ValueName: "DefaultPassword"; ValueData: "sdc1234";Check: IsWin64
        //      Root: HKLM64; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System";ValueType: dword; ValueName: "EnableLUA"; ValueData: "0";Check: IsWin64

        AutoAdminLogin = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\SystemRestart", "AutoAdminLogon", null);
        DefaultUserName = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\SystemRestart", "DefaultUserName", null);
        DefaultDomain = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\SystemRestart", "DefaultDomain", null);
        DefaultPassword = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\SystemRestart", "DefaultPassword", null);
        SymbolicName = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\RemoteAgent", "SymbolicName", null);
        ServerAPIKey = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\RemoteAgent", "ServerAPIKey", null);


        if (String.IsNullOrEmpty(AutoAdminLogin))
        {
            AutoAdminLogin = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon", "AutoAdminLogon", null);
        }

        if (String.IsNullOrEmpty(DefaultUserName))
        {
            DefaultUserName = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName", null);
        }

        if (String.IsNullOrEmpty(DefaultDomain))
        {
            DefaultDomain = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultDomain", null);
        }
        if (String.IsNullOrEmpty(DefaultPassword))
        {
            DefaultPassword = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultPassword", null);
        }
        if (String.IsNullOrEmpty(SymbolicName))
        {
            SymbolicName = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\RemoteAgent", "SymbolicName", null);
        }
        if (String.IsNullOrEmpty(ServerAPIKey))
        {
            ServerAPIKey = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\MDL\RemoteAgent", "ServerAPIKey", null);
        }

        if (String.IsNullOrEmpty(DefaultUserName))
        {
            DefaultUserName = Environment.GetEnvironmentVariable("USERNAME");
        }

        if (String.IsNullOrEmpty(DefaultDomain))
        {
            DefaultDomain = Environment.GetEnvironmentVariable("USERDOMAIN");
        }

        if (AutoAdminLogin == null || AutoAdminLogin != "1")
            AutoAdminLogin = "0";

        tbUserName.Text = DefaultUserName;
        tbDomain.Text = DefaultDomain;
        tbPassword.Text = DefaultPassword;
        tbSymbolicName.Text = SymbolicName;
        tbServerAPIKey.Text = ServerAPIKey;

        cbAutoLogin.Checked = (AutoAdminLogin == "1") ? true : false;

        compareLoginUsername();

        compareLoginPassword();
}

お時間をいただきありがとうございます、

-S

TS

すべてのボックスを同じロジックに配線できます

box1.TextChanged += TextchangedHandler();
box2.TextChanged += TextchangedHandler();
box3.TextChanged += TextchangedHandler();

また、ハンドラーはテキストボックスやそのデータなどをどう処理するかを処理できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事