【问题标题】:Changing text in another form by clicking a button通过单击按钮以其他形式更改文本
【发布时间】:2013-05-21 08:23:10
【问题描述】:

我一直在尝试通过单击 Form2 中的按钮(form2 中的按钮 1 为“STARTA”)来更改 Form1 中文本框的文本,现在可能花了 2 个小时(我是一个编程新手!) . 我一直在寻找类似的问题并找到了一堆,但即使尝试了很多,我也无法让它发挥作用。

Form1[设计]

Form2[设计]

我现在正在尝试的方法是我找到的here

在 Form1 中我写了这个:

public string STARTTID
{
    get
    {
        return this.textBox3.Text;
    }
    set
    {
        this.textBox3.Text = value;
    }
}

我知道获取和设置一个空的文本框不太有意义,但是我尝试了很多我认为应该可行的不同解决方案,但是当我单击按钮时文本框的文本不会改变! 在form2中,当button1被点击时,我是这样写的:

string TIDEN = DateTime.Now.ToString("HH:mm:ss tt");
Form1 first = new Form1();
first.STARTTID = TIDEN;

我想要做的是,我希望 form1 中的 textBox3 中的文本更改为按下 form2 中的 button1 时的当前时间。

对不起,如果这篇文章有点乱,这是我的第一篇文章,英语不是我最擅长的语言。

【问题讨论】:

  • 您有错误还是只是无法正常工作?
  • 你能贴一些更完整的代码吗,例如我看不到你在哪里调用 first.show() 等。

标签: c# winforms label


【解决方案1】:

问题是您创建了新的Form1 并在该标签上更新标签,而不是在您的初始形式中

    Form1 first = new Form1();
    first.STARTTID = TIDEN;

您不需要创建新表单,因为您已经创建了它。您可以做的是在使用接受 Form 作为参数的构造函数创建 Form2 时将 Form1 解析为 Form2。或在 Form2 中为 Form1 创建属性,并在创建 Form2 时设置它。

Form1

Form2 f2 = new Form2(this);
f2.Show();

Form2

public partial class Form2 : Form
{
    private Form1 form1;

    public Form2(Form1 form1)
    {
        InitializeComponent();
        this.form1 = form1;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        form1.STARTTID = "set by form2";
    }
}

【讨论】:

  • 恐怕我不太了解,因为我对参数、构造函数和“解析”的了解太有限了,你能用代码告诉我我需要改变什么吗?
猜你喜欢
  • 1970-01-01
  • 2017-05-31
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多