C# 获取Form2到Form1的textbox100的值
当DateTime.Now=用户输入的日期时,我想隐藏一个按钮。textbox100在Form2中,已经是公共的,但我知道还缺少其他内容,因为我得到了错误:“名称'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)
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;