计时器未获取控制文本框数据
本文关键字:数据 文本 控制 获取 计时器 | 更新日期: 2024-09-24 17:46:51
所以我试图从Timer执行一个方法,问题是每次我调用该方法并传递一个字符串作为参数时,字符串都会自动设置为NULL,这很奇怪,有修复方法吗?如果你想看看,这里有一些代码
private void timer1_Tick(object sender, EventArgs e)
{
int currentHour = FixTime(DateTime.Now.ToString("hh tt"));
int currentMinute = FixTime(DateTime.Now.ToString("mm tt"));
int currentSeconds = FixTime(DateTime.Now.ToString("ss tt"));
string currentTT = DateTime.Now.ToString("tt");
int userHour = Settings.Default.hour;
int userMinute = Settings.Default.minutes;
int userSeconds = Settings.Default.seconds;
string userTT = Settings.Default.TT;
if (currentHour == userHour && currentMinute == userMinute &&
currentSeconds == userSeconds && currentTT == userTT)
{
MakeThePost(postTextBox.Text); // the postTextBox.Text field automatically is set to null
}
}
private void MakeThePost(string data)
{
string text = data;
if (!String.IsNullOrEmpty(text))
{
fb.Post("me/feed", new { message = text });
}
else
MessageBox.Show("Nothing to post on facebook", "Field is empty",MessageBoxButtons.OK, MessageBoxIcon.Error);
}
更新:所以问题可能不在计时器中,甚至不在MakeThePost中,真正的问题是在我试图显示的另一种形式中,当它显示时,构造函数会生成一个新的Form1对象,我为什么要这样做?,因为我想访问主窗体中的控件,但当我执行Form1构造函数来创建新对象时,Form1-postTextBox控件会停止更新其Text属性,所以有其他方法可以在不初始化对象的情况下访问主窗体控件吗?
发布的代码似乎不包含任何会导致postTextBox.Text
属性变为null
的内容。
您的应用程序中必须有其他内容为该属性设置为null。请确保数据绑定没有以静默方式将其设置为null
。
在调用MakeThePost
的行和MakeThePost
的第一行都插入断点,然后运行应用程序。
查看该属性是仅在调用之前为null
,还是在方法之前和方法内部都为。
编辑:
根据您最近的编辑,您似乎正在创建一个新的Form1
实例,而在实例化Form2
时,您可能应该传递对现有实例的引用
添加一个以Form1
对象为参数的Form2
构造函数:
public partial class Form2 : Form
{
private Form1 otherForm;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 frm) : this()
{
otherForm = frm;
}
//Other methods and properties of Form2
}
然后创建一个新的Form2
:实例
Form2 secondForm = new Form2(form1Instance);
现在,在Form2
实例中,您有otherForm
引用,它将允许您调用Form1
实例的公共成员。您可能需要更改某些Form1
成员的访问修饰符,以使其公开。