Получить значение из TextBox (C #) - PullRequest
0 голосов
/ 24 сентября 2011

Я сохранял в реестре информацию, которая была напечатана в TextBox на форме, которая была создана ранее. После открытия формы я хочу отобразить всю информацию, которая была сохранена в TextBox.Когда я пытаюсь запустить следующий код, он возвращает нулевое значение.В чем может быть проблема?

Код:

SQLSERVER = textBox1.Text;

SQLDATABASE = textBox2.Text;

SQLUSER = textBox3.Text;

SQLPASS = textBox4.Text;



try

{

SqlConnection Baglanti = new SqlConnection("Data Source='" + SQLSERVER + "'; Initial Catalog='" + SQLDATABASE + "'; User id='" + SQLUSER + "'; Password='" + SQLPASS + "';");

Baglanti.Open();

RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software", true);

if (key != null)

{

RegistryKey key2 = key.CreateSubKey("BilkerSoft");

key.SetValue("SQLSERVER", SQLSERVER, RegistryValueKind.String);

Registry.CurrentUser.CreateSubKey("BilkerSoft").SetValue("SQLSERVER", SQLSERVER);

Registry.CurrentUser.CreateSubKey("BilkerSoft").SetValue("DATABASE", SQLDATABASE);

Registry.CurrentUser.CreateSubKey("BilkerSoft").SetValue("USER", SQLUSER);

Registry.CurrentUser.CreateSubKey("BilkerSoft").SetValue("PASSWORD", SQLPASS);

}

}

catch (Exception ex)

{

MessageBox.Show("Hata oluştu:'" + ex.Message + "'");

}

RegistryKey key1 = Registry.CurrentUser.OpenSubKey("BilkerSoft",true);

try

{

if (key1 != null)

{

key1.SetValue("SQLSERVER", SQLSERVER, RegistryValueKind.String);

Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("SQLSERVER", SQLSERVER);

Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("DATABASE", SQLDATABASE);

Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("USER", SQLUSER);

Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("PASSWORD", SQLPASS);

}

Baglanti = new SqlConnection("Data Source='" + SQLSERVER + "';Initial Catalog='" + SQLDATABASE + "';User id='" + SQLUSER + "';Password='" + SQLPASS + "'");

Baglanti.Open();

Baglanti.Close();

MessageBox.Show("Kayıt Başarılı");

}

catch (Exception ex)

{

MessageBox.Show("Hata oluştu:'" + ex.Message + "'");

}

}

private void Form1_Load(object sender, EventArgs e)

{

RegistryKey key2 = Registry.CurrentUser.OpenSubKey("BilkerSoft", true);

textBox1.Text = Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("SQLSERVER", SQLSERVER).ToString();

textBox2.Text = Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("DATABASE", SQLDATABASE).ToString();

textBox3.Text = Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("USER", SQLUSER).ToString();

textBox4.Text = Registry.CurrentUser.OpenSubKey("BilkerSoft").GetValue("PASSWORD", SQLPASS).ToString();

}

private void button2_Click(object sender, EventArgs e)

{

Application.Exit();

}

}

Ответы [ 2 ]

1 голос
/ 24 сентября 2011

Итак, когда вы делаете вызов Registry.CurrentUser.OpenSubKey("BilkerSoft", true);, что это за SubKey? Когда вы сделали подразделом, вы создавали его на основе значения подраздела «Программное обеспечение», но затем вы пытаетесь найти тот, который не ссылается на этот подраздел программного обеспечения ... не вижу этого, верно?

Итак, у вас есть:

->Software
    ->BilkerSoft

Но то, что вы изначально ищете через key2:

->BilkerSoft

(подключ от корня, которого не существует)

Я подозреваю, что если вы укажете, где вы ищете подключ, он найдет это просто отлично. «BilkerSoft» находится в разделе «Программное обеспечение», а не на том же уровне, что и «Программное обеспечение».

Это означает, что если вы сделали что-то вроде key2 = key.OpenSubKey("BilkerSoft", true);, оно найдет его (поскольку key - это раздел реестра "Software"). Не проверял это - я на Mac - но похоже на то, что вы хотите.

0 голосов
/ 24 сентября 2011
    void ReadReg(string key, params Action<RegistryKey>[] results)
    {
        var k = Registry.CurrentUser.OpenSubKey(key);
        if (k != null)
        {
            foreach (var item in results)
            {
                item(k);
            }
            k.Close();
        }
    }

    void WriteReg(string key, params Action<RegistryKey>[] results)
    {
        var k = Registry.CurrentUser.OpenSubKey(key, true);
        if (k != null) k = Registry.CurrentUser.CreateSubKey(key);
        foreach (var item in results)
        {
            item(k);
        }
        k.Close();
    }

Запись ==>

WriteReg(@"Software\BilkerSoft", key =>
            {
                key.SetValue("SQLSERVER", textBox1.Text);
            }, key =>
            {
                key.SetValue("DATABASE", textBox2.Text);
            }, key =>
            {
                key.SetValue("USER", textBox3.Text);
            }, key =>
            {
                key.SetValue("PASSWORD", textBox4.Text);
            });

Читать ==>

ReadReg(@"Software\BilkerSoft", key =>
        {
            textBox1.Text = key.GetValue("SQLSERVER").ToString();
        },key =>
        {
            textBox2.Text = key.GetValue("DATABASE").ToString();
        },key =>
        {
            textBox3.Text = key.GetValue("USER").ToString();
        },key =>
        {
            textBox4.Text = key.GetValue("PASSWORD").ToString();
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...