从TextBox(C#)中获取值

本文关键字:获取 TextBox | 更新日期: 2023-09-27 18:09:36

我一直在将之前创建的表单上输入到TextBox中的信息保存到注册表中。打开表单后,我想显示保存到TextBox中的所有信息。当我尝试运行以下代码时,它返回的是null值。可能是什么问题?

代码:

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();
}
}

从TextBox(C#)中获取值

那么,当您调用Registry.CurrentUser.OpenSubKey("BilkerSoft", true);时,它到底是什么的SubKey?当你制作子密钥时,你是根据子密钥"软件"的值创建的,但你试图找到一个不引用该软件子密钥的。。。所以它看不见,对吧?

所以你有:

->Software
    ->BilkerSoft

但你最初通过key2寻找的是:

->BilkerSoft

(根目录下不存在的子密钥(

我怀疑,如果你在寻找子密钥的地方符合条件,它会发现它很好。"BilkerSoft"位于"软件"之下,与"软件"不在同一级别。

这意味着,如果你做了类似key2 = key.OpenSubKey("BilkerSoft", true);的事情,它会找到它(因为key是"软件"注册表项(。还没有测试过这个——我在Mac上——但看起来像你想要的。

    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();
        });