第一个问题,我是编程新手,但是我似乎无法使用另一种形式(code(form1))来更改形式的变量:
public partial class Main : Form
{
private string emptyOrNull = "You must first input a valid link!";
public string homepage = "https://google.com";
private void NavigateToPage()
{
button1.Enabled = false;
txtUrl.Enabled = false;
webBrowser.Navigate(txtUrl.Text);
}
这是来自form2(设置)的代码:
public partial class Settings : Form
{
Main main = new Main();
public Settings()
{
InitializeComponent();
txtHomepage.Text = main.homepage;
}
private void btnSave_Click(object sender, EventArgs e)
{
main.homepage = txtHomepage.Text;
this.Close();
}
每当我按保存时,它将返回默认字符串“ google.com”。我怎样才能解决这个问题?
答案 0 :(得分:0)
将Main
表单作为参数传递给Settings
对象中的自定义构造函数。现在,您正在声明Main
页面的新实例,而不引用已经打开的页面。
启动您的Main
页面的Settings
中的任何方法应如下所示:
var settingsPage = new Settings(this);
settingsPage.Show();
错别字致歉。在没有VS的手机上。
UPDATE-Settings
构造函数:
public partial class Settings : Form
{
Main main = new Main();
public Settings()
{
InitializeComponent();
txtHomepage.Text = main.homepage;
}
public Settings(Main fromMain)
{
InitializeComponent();
main = fromMain;
txtHomepage.Text = main.homepage;
}
private void btnSave_Click(object sender, EventArgs e)
{
main.homepage = txtHomepage.Text;
this.Close();
}
}
答案 1 :(得分:0)
我找到了另一个解决我的问题的线程,它是:Send values from one form to another form
我不知道该如何做。然后我意识到,当在btnSave_click块下时,我可以这样做:
private void btnSave_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
将采用TheValue变量,该变量返回了textBox.text变量,并将其分配给form1的主页变量。
还是,谢谢您的回答。
答案 2 :(得分:-1)
您可以只使用Session集合,即:
string GetHomePage()
{
if(Session["HOME"] == null)
{
string h = "https://google.com";
Session["HOME"] = h;
return h;
}
return (string)Session["HOME"];
}
void SetHomePage(string homePage)
{
Session["HOME"] = homePage;
}
只要在同一IIS会话中,就可以从任何页面访问Session集合。 IIS会话可以通过登录,在IIS上超时等来确定,但这是另一个主题。