2011-09-24 5 views
-1

이전에 만든 양식의 TextBox에 입력 한 정보를 레지스트리에 저장했습니다. 양식을 연 후 양식에 저장된 모든 정보를 표시하려고합니다. TextBox. 다음 코드를 실행하려고하면 null 값이 반환됩니다. 무엇이 문제일까요?TextBox (C#)에서 값 가져 오기

코드 :

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

} 

} 
+0

당신의 MEEN의 textBox1.Text == null이? –

+0

null입니까? 키? key1? 모두들? – itsmatt

+0

@ itsmatt-key1은 null입니다. – Selo

답변

1

당신이 전화 Registry.CurrentUser.OpenSubKey("BilkerSoft", true);을 할 때, 무엇 정확하게의 하위 키가? 하위 키를 만들었 으면 "Software"하위 키 값을 생성했지만 그 소프트웨어 하위 키를 참조하지 않는 키를 찾으려고합니다 ... 그러면 보이지 않습니다. 권리?

은 그래서 당신이있어 :

->Software 
    ->BilkerSoft 

그러나 처음 키 2를 통해 찾고있는 것은 :

->BilkerSoft 

(존재하지 않는 루트 떨어져 하위 키)

하위 키를 찾을 수있는 위치에 자격을 부여하면 문제가없는 것으로 판단됩니다. "BilkerSoft"는 "소프트웨어"와 동일한 수준이 아니라 "소프트웨어"에 속합니다.

key2 = key.OpenSubKey("BilkerSoft", true);과 같이 입력하면 (소프트웨어 번호가 key이므로) 찾을 수 있습니다. 테스트 해 본적이 없습니다. 저는 Mac에 있지만 원하는 것만 큼 좋습니다.

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