公共字符串不';我不想更新
本文关键字:我不想 更新 字符串 | 更新日期: 2023-09-27 18:21:04
我有两种形式。。Form1.cs和TwitchCommands.cs
我的Form1.cs有一个全局变量
public string SkinURL { get; set;}
我希望该字符串是TwitchCommands.cs 中文本框的值
以下是TwitchCommands.cs中的代码,它应该在Form.cs 中设置公共字符串"SkinURL"
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"
有人知道为什么吗?
因为您正在创建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