2

授業がある !

class Reg_v_no_string
{
    public static string key_place = "";
    public static string key = "";
    public static string value = "";
    public string reg_value(string key_place, string key)
    {
        string value = string.Empty;

            RegistryKey klase = Registry.CurrentUser;
            klase = klase.OpenSubKey(key_place);
            value = klase.GetValue(key).ToString();
            klase.Close();

        return value;
    }
}

これにより、空白のメッセージボックスが返されます。どうすればこの問題を解決できるでしょうか!? ありがとう !

このクラスから値を返すにはどうすればよいですか?

やってみた

private void kryptonButton1_Click(object sender, EventArgs e)
    {
        Reg_v_no_string.key_place = @"Control Panel\Desktop";
        Reg_v_no_string.key_place = "WheelScrollLines";
        MessageBox.Show(Reg_v_no_string.value);

    }
4

3 に答える 3

5

実際にメソッドを呼び出す必要があります。

private void kryptonButton1_Click(object sender, EventArgs e) 
{ 
    var value = reg_value(@"Control Panel\Desktop", "WheelScrollLines");
    MessageBox.Show(value); 
} 

クラスへのいくつかの変更も検討してください。

public static class Reg_v_no_string 
{ 
    public static string reg_value(string key_place, string key) 
    { 
        string value = string.Empty; 

         RegistryKey klase = Registry.CurrentUser; 
         // todo: add some error checking to make sure the key is opened, etc.
         klase = klase.OpenSubKey(key_place); 
         value = klase.GetValue(key).ToString(); 
         klase.Close(); 

        return value; 
    } 
} 

そして、このstaticクラスを呼び出すと、次のようになります。

// you don't need to `new` this class if it is static:
var value = Reg_v_no_string.reg_value(@"Control Panel\Desktop", "WheelScrollLines");

または、静的にならないようにするには、次のようにします。

public class Reg_v_no_string 
{ 
    public string reg_value(string key_place, string key) 
    { 
        string value = string.Empty; 

         RegistryKey klase = Registry.CurrentUser; 
         // todo: add some error checking to make sure the key is opened, etc.
         klase = klase.OpenSubKey(key_place); 
         value = klase.GetValue(key).ToString(); 
         klase.Close(); 

        return value; 
    } 
} 

次に、次のように呼び出します。

Reg_v_no_string obj = new Reg_v_no_string ();
var value = reg_value(@"Control Panel\Desktop", "WheelScrollLines");
于 2012-07-23T22:58:01.230 に答える
4

を呼び出すコードはありませんreg_value

その結果、フィールドのデフォルト値 (インスタンス間でも共有) を取得していvalueます。

于 2012-07-23T22:54:25.943 に答える
0

Reg_v_no_string.valueまだ設定されていません。値を返す関数
を呼び出す必要があります。reg_value(string key_place, string key)

于 2017-05-16T06:30:48.697 に答える