2015-11-07 54 views
1

我有兩種形式.. Form1.cs和TwitchCommands.cs公共字符串不希望更新

我Form1.cs中有一個全局變量

public string SkinURL { get; set;} 

,我想該字符串是一個文本框的TwitchCommands.cs

這裏的價值是在TwitchCommands.cs的代碼,應設置公共字符串「SkinURL」在Form.cs

private void btnDone_Click(object sender, EventArgs e) 
     { 
      if (txtSkinURL.Text == @"Skin URL") 
      { 
       MessageBox.Show(@"Please enter a URL..."); 
      } 
      else 
      { 
       var _frm1 = new Form1(); 
       _frm1.SkinUrl = txtSkinURL.Text; 
       Close(); 
      } 
     } 

這裏是在Form1.cs試圖訪問字符串「SkinURL」代碼

else if (message.Contains("!skin")) 
       { 
        irc.sendChatMessage("Skin download: " + SkinUrl); 
       } 

比方說,txtSkinURL.text =「www.google.ca」我叫條命令在Form1.cs

它返回「皮膚下載:」而不是「皮膚下載:www.google.ca」

有沒有人知道爲什麼?

+0

因爲您正在創建Form1的NEW實例。一個帶有自己的SkinURL變量的實例,當然這個變量還沒有收到Form1的第一個實例所做的更改。 – Steve

+0

如何訪問SkinURL變量? – Pops

回答

1

因爲您正在創建一個Form1的新實例。具有自己的SkinURL變量的實例。這是從您的第二個表單接收文本的變量。在Form1的第一個實例變量不是由你的代碼

如果調用Show方法的新實例

.... 
else 
{ 
    var _frm1 = new Form1(); 
    _frm1.SkinUrl = txtSkinURL.Text; 
    _frm1.Show(); 
} 
... 

在您的情況我認爲你需要把你這很容易證實感動全局變量TwitchCommands.cs形式裏面,當你調用的形式,你可以讀回

在TwitchCommands.cs

public string SkinURL { get; set;} 
private void btnDone_Click(object sender, EventArgs e) 
{ 
    if (txtSkinURL.Text == @"Skin URL") 
    { 
     MessageBox.Show(@"Please enter a URL..."); 
    } 
    else 
    { 
     SkinURL = txtSkinURL.Text; 
     Close(); 
    } 
} 

並在Form1.cs中,當您調用TwitchCommands.cs表格時

TwitchCommands twitchForm = new TwitchCommands(); 
twitchForm.ShowDialog(); 

string selectedSkin = twitchForm.SkinURL; 
... and do whatever you like with the selectedSkin variable inside form1 
+0

謝謝。那是我的錯誤。我在做twitchForm.Show();而不是twitchForm.ShowDialog(); – Pops