C# 获取Form2到Form1的textbox100的值

C# 获取Form2到Form1的textbox100的值,c#,forms,textbox,C#,Forms,Textbox,当DateTime.Now=用户输入的日期时,我想隐藏一个按钮。textbox100在Form2中,已经是公共的,但我知道还缺少其他内容,因为我得到了错误:“名称'textbox100'在当前上下文中不存在。” 多谢各位 public void Form1_Load(object sender, EventArgs e) { var dateTimeStr = textBox100.Text; var user_time = DateTime.Parse(dateTimeStr)

当DateTime.Now=用户输入的日期时,我想隐藏一个按钮。textbox100在Form2中,已经是公共的,但我知道还缺少其他内容,因为我得到了错误:“名称'textbox100'在当前上下文中不存在。”

多谢各位

public void Form1_Load(object sender, EventArgs e)
{
    var dateTimeStr = textBox100.Text;
    var user_time = DateTime.Parse(dateTimeStr);
    var time_now = DateTime.Now;

    if (time_now >= user_time)
    {
        button1.Visible = false;
    }
}

即使它是公共的,它仍然属于类
Form2

var dateTimeStr = Form2.textBox100.Text;

如果Form2未实例化,且在Form1中有引用,则无法获取textbox100的文本。然后使用UnLoCo的线路。当然,它必须在表单2中公开,您需要改进表单之间的沟通。请参阅中已接受的答案

适应您的代码:

using ( var form = new Form2() )
{
    var dateTimeStr = form.textBox100.Text;
    var user_time = DateTime.Parse(dateTimeStr);
    var time_now = DateTime.Now;

    if (time_now >= user_time)
    {
        button1.Visible = false;
    }
}
如果在获取文本框的值之前需要等待,即等待用户输入,则可以编写:

string dateTimeStr;
using ( var form = new Form2() )
{
    form.submitButton.OnMouseUp += (source, e) =>
    {
        dateTimeStr = form.textBox100.Text;
    };
} 

假设表单中有一个提交按钮。

这不是JavaScript:为什么在每一行中都使用
var
?因为右边的类型很明显,不是吗?@TimSchmelter好吧,是的,但在C#(与JavaScript相反,程序员习惯于阅读这样的代码)中,我习惯于读取变量的类型、标识符,然后是初始化值。必须为自己找出类型并不困难,但它确实会让我不必要地慢下来。这也使得代码更加混乱,不易维护。别担心,伙计们,我对C#很陌生。@joaocarlosrafiel:实际上是你的问题;)
Form2
是类型,
textBox100
是其实例中的文本框。您不能将控件设为静态。我是这样做的:public Form2 frm2=new Form2()。。。var dateTimeStr=frm2.textBox100.Text;