2

このトピックで多くの質問を見つけましたが、これではありません。C# アプリケーションの設定を使用していますが、各設定を新しい行に保存するのが非常に見苦しくなります。これを次のコードで保存しようとしました:

for (int j = 0; j < settingsTabControl.SelectedTab.Controls.Count; j++)
{
    string currItemName = settingsTabControl.SelectedTab.Controls[j].Name;
    if (currItemName.Substring(0, 7) == "savable" && currItemName == currOptionName)
    {
        if (savableRunAsAdmin.HasProperty("Text"))
        {
            settingsTabControl.SelectedTab.Controls[j].Text = currOptionValue;
        }
        else if (savableRunAsAdmin.HasProperty("Checked"))
        {
            settingsTabControl.SelectedTab.Controls[j].Checked = Convert.ToBoolean(currOptionValue);
        }
    }
}

public static bool HasProperty(this object objectToCheck, string methodName)
{
    var type = objectToCheck.GetType();
    return type.GetProperty(methodName) != null;
}

しかし、それは言う、

'System.Windows.Forms.Control' does not contain a definition for 'Checked' and no extension method 'Checked' accepting a first argument of type 'System.Windows.Forms.Control' could be found (are you missing a using directive or an assembly reference?)

設定を動的に保存できますか、それとも各設定を 1 つずつ保存する必要がありますか?

4

1 に答える 1

4

SelectedTab.Controlsは aControlCollectionを返すため、インデクサーは a を返しますControl。あなたはそれをキャストする必要があります:

((CheckBox)settingsTabControl.SelectedTab.Controls[j]).Checked ...

またはそれがRadioButtonあなたが求めている場合:

((RadioButton)settingsTabControl.SelectedTab.Controls[j]).Checked ...
于 2013-10-23T17:24:20.790 に答える