很抱歉,我知道这个问题,或者类似的问题经常被问到,但是由于我已经通过不同的主题,我只是不知道如何将它应用到我的程序中。
这是我的情况: 在表格1中,我有一个标签。这是一个打开表格2的按钮,它有单选按钮和一个按钮。表单2中的按钮应该从单选按钮发送一个字符串值到表单1中的label.Text。我怎么能这样做呢?
所以,下面是打开表格2的内容。
private void selectkeyButton_Click(object sender, EventArgs e)
{
selectKeyboard sk = new selectKeyboard();
sk.ShowDialog();
}
在表格2中,这是我到目前为止所拥有的:
public Form1 otherForm = new Form1();
string hotkey = "";
public void hotkeyChanged(object sender, EventArgs e)
{
RadioButton rr = (RadioButton)sender;
switch (rr.Name)
{
case ("buttonF1"):
hotkey = "F1 ";
break;
}
}
public void buttonConfirmKey_Click(object sender, EventArgs e)
{
hotkey = otherForm.keyLabel.Text;
this.Close();
}
我在哪里public Form1 otherForm = new Form1();
和hotkey = otherForm.keyLabel.Text;
我找到了它here.
它似乎无法正常工作,因为当我按下form2上的按钮时,表单会关闭,但form1中的标签不会改变......
任何想法? 感谢
答案 0 :(得分:0)
在表单的构造函数中,您可以获得如下值:
在form2中你应该添加一个这样的构造函数:public partial class Form2: Form
{
public string _newvalue
public Form2(string value)
{
InitializeComponent();
_newvalue=value
}
//you should assign the value to the label .
}
在form1中你应该这样做:
form2 new=form2("sampletext");
new.showdialog();
答案 1 :(得分:0)
解决方案1:
在Form1中:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2(this);
f.ShowDialog();
}
表格2中的代码:
Form frm_;
public Form2(Form frm)
{
InitializeComponent();
frm_ = frm;
}
private void btnInForm2_Click(object sender, EventArgs e)
{
Label lbl = (Label)frm_.Controls.Find("lblInForm1", true)[0];
string PassVal="What you want";
lbl.Text = PassVal;
}
解决方案2:
表格1中的:
Form2 f = new Form2();
if (f.ShowDialog() == DialogResult.OK)
{
lblInForm1.Text = f.PassVal;
}
表2中的:
internal string PassVal = "";
PassVal是一个Field。
答案 2 :(得分:0)
有不同的方法可以做到这一点。你可以这样:
解决方案一:
(在这种情况下,不要忘记将label1的修饰符设置为Public。您可以在设计器选项中设置此选项>在Properties> design下)
表单1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(this);
frm.Show();
}
}
表格2:
public partial class Form2 : Form
{
private readonly Form1 _parent;
public Form2(Form1 parent)
{
InitializeComponent();
_parent = parent;
}
private void button1_Click(object sender, EventArgs e)
{
_parent.label1.Text = textBox1.Text;
Close();
}
}
解决方案2
不是将label1设置为public,而是将其保留为私有(默认情况下),但将表单2上button1的DialogResult属性设置为" DialogResult OK" (在“属性”和“行为”下)
表单1:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
DialogResult res = frm.ShowDialog();
if (res == DialogResult.OK)
{
label1.Text = frm.MyNewText;
}
}
}
表格2:
public partial class Form2 : Form
{
public string MyNewText;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyNewText = textBox1.Text;
Close();
}
}