基本上我要做的是在主窗体上有一个字符串,它从文本框中提取它的值。
然后我生成第二个表单的模态版本,并希望在第二个表单中使用该字符串(或主表单textbox1.text值)。
主要表格
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace Tool{
public partial class MainForm : Form
{
public string hostname;
public MainForm()
{
InitializeComponent();
textBox1.Text = hostname;
}
public void btn_test_Click(object sender, EventArgs e)
{
string hostname = textBox1.Text;
SiteForm frmsite = new SiteForm();
frmsite.ShowDialog();
}
}
}
” 儿童表格
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace Tool
{
public partial class SiteForm : Form
{
public string hostname {get; set; }
public SiteForm()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
label1.Text = this.hostname;
}
}
}
关于我如何做到这一点的任何建议?我知道必须有一个更简单的方法,对不起我仍然有点像菜鸟,我正在努力自学C#。
结果是当我点击子表单上的标签时它是空白的,因此我可以推断出字符串没有正确地在两个表单之间传递。
答案 0 :(得分:2)
最简单的方法是在Child表单的构造函数中传递它,例如:
private string _hostname = "";
...
public SiteForm(string hostname)
{
_hostname = hostname;
InitializeComponent();
}
答案 1 :(得分:1)
尝试挂钩您的子表单的Load
事件,并在主表单的事件处理程序中设置其hostname
属性的值。
public void btn_test_Click(object sender, EventArgs e)
{
string hostname = textBox1.Text;
SiteForm frmsite = new SiteForm();
frmsite.Load += new EventHandler(frmsite_Load);
frmsite.ShowDialog();
}
public void frmsite_Load(object sender, EventArgs e)
{
SiteForm frmsite = sender as SiteForm;
frmsite.hostname = this.hostname;
}