如何从另一个表单刷新文本框?c#



我想用这个代码从另一个表单更新一个文本框:

private void Button2_Click(object sender, EventArgs e)
{
Variables.revenu += Variables.LAIR * 30;
Cartel_Form.Textbox_Revenu.Text = Variables.revenu.ToString();
}

但是我得到这个错误:

非静态字段、方法或属性'卡特尔. form . textbox_revenu '需要对象引用

以下是第一个表单中文本框的内容:

Textbox_Revenu.Text = Variables.revenu.ToString();

在相同的形式,我可以刷新/修改文本框,但不能在另一个形式。文本框修饰符设置为public

下面是一个使用事件的示例,其中子窗体包含事件,而主窗体侦听这些事件。两个窗体都有一个TextBox和一个NumericUpDown控件。或者像@jimi提到的使用绑定。

主要形式

using System;
using System.Windows.Forms;
namespace PassingDataBetweenFormsSimple
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void ShowChildButton_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();

childForm.PassingData   += ChildFormOnPassingData;
childForm.PassingNumber += ChildFormOnPassingNumber;
try
{
childForm.ShowDialog();
}
finally
{
childForm.Dispose();
}

}
private void ChildFormOnPassingNumber(int value)
{
numericUpDown1.Value = numericUpDown1.Value + value;
}
private void ChildFormOnPassingData(string text)
{
FirstNameTextBox.Text = string.IsNullOrWhiteSpace(text) ? 
"(empty)" : 
text;
}
}
}

子窗体

using System;
using System.Windows.Forms;
namespace PassingDataBetweenFormsSimple
{
public partial class ChildForm : Form
{
public delegate void OnPassingText(string text);
public event OnPassingText PassingData;
public delegate void OnPassingNumber(int value);
public event OnPassingNumber PassingNumber;
public ChildForm()
{
InitializeComponent();
}
private void PassDataButton_Click(object sender, EventArgs e)
{
PassingData?.Invoke(FirstNameTextBox.Text);
PassingNumber?.Invoke((int)numericUpDown1.Value);
}
}
}

相关内容

  • 没有找到相关文章

最新更新