计时器未获取控制文本框数据

本文关键字:数据 文本 控制 获取 计时器 | 更新日期: 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成员的访问修饰符,以使其公开。