_textChanged 事件给我错误“对象引用未设置到对象的实例”

发布于 2024-12-03 21:18:17 字数 2339 浏览 0 评论 0原文

我是 C# 新手,所以仍在寻找解决办法。

我有一个按钮,仅当用户在文本框中输入文本时才启用。 我收到此错误 - “对象引用未设置为对象的实例”。

这是相关代码(不使用 using 和变量):

    public MainWindow()
    {
        MessageBox.Show("Make sure to edit Settings tab.");
        InitializeComponent();
        if (startTextBox.Text == "0")    // Checks to see if a textbox has some text other than zero. if no than the user cannot press button1 yet.
        {
            button1.IsEnabled = false;
        }
        else
        {
            button1.IsEnabled = true;
        }

    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {

        if (radioButton1.IsChecked == false)
        {
            label17.Content = "No Hourly wage was set.";
        }

    }

    private void add(object sender, RoutedEventArgs e)    /// here is a very long method so I've removed its content.


    }


    public void printTime()
    {

        int Sum = (this.EndInt - this.StartInt);
        int Money = (Sum * this.L1001);


        label16.Content = Sum;
        label17.Content = Money;
        if ((textBox1.Text == "0") && ((textBox2.Text == "0") || (textBox3.Text == "0")))
        {
            label17.Content = "No Hourly wage was set.";
        }
    }

    public void printTime2()
    {

        int Sum = (this.EndInt - this.StartInt);
        MessageBox.Show("Is it possible that you've worked - " + Sum + " Hours?");
    }

    public void printTime3()
    {

        int Sum = (this.EndInt - this.StartInt);
        int Money = (Sum * this.L1001);

        label16.Content = Sum;
        label17.Content = Money;
        if (textBox1.Text == "0")
        {
            label17.Content = "No Hourly wage was set.";
        }
    }


    public int Convert(String S)
    {
        int i = int.Parse(S);
        return i;
    }


    // Input Validation For Excepting Integers Only!
    private void input(object sender, TextCompositionEventArgs e)
    { CheckIsNumeric(e); }
    private void CheckIsNumeric(TextCompositionEventArgs e)
    {
        int result; if (!(int.TryParse(e.Text, out result) || e.Text == "."))
        { e.Handled = true; MessageBox.Show("Numbers Only"); }

    }


    private void startTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {

        button1.IsEnabled = true;
    }




}

}

I'm new to C# so still finding my way around.

I have a button I want to enable only when a user enter text to textbox.
I get this error - "Object reference not set to an instance of an object".

Here is the related code (without the using and variables):

    public MainWindow()
    {
        MessageBox.Show("Make sure to edit Settings tab.");
        InitializeComponent();
        if (startTextBox.Text == "0")    // Checks to see if a textbox has some text other than zero. if no than the user cannot press button1 yet.
        {
            button1.IsEnabled = false;
        }
        else
        {
            button1.IsEnabled = true;
        }

    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {

        if (radioButton1.IsChecked == false)
        {
            label17.Content = "No Hourly wage was set.";
        }

    }

    private void add(object sender, RoutedEventArgs e)    /// here is a very long method so I've removed its content.


    }


    public void printTime()
    {

        int Sum = (this.EndInt - this.StartInt);
        int Money = (Sum * this.L1001);


        label16.Content = Sum;
        label17.Content = Money;
        if ((textBox1.Text == "0") && ((textBox2.Text == "0") || (textBox3.Text == "0")))
        {
            label17.Content = "No Hourly wage was set.";
        }
    }

    public void printTime2()
    {

        int Sum = (this.EndInt - this.StartInt);
        MessageBox.Show("Is it possible that you've worked - " + Sum + " Hours?");
    }

    public void printTime3()
    {

        int Sum = (this.EndInt - this.StartInt);
        int Money = (Sum * this.L1001);

        label16.Content = Sum;
        label17.Content = Money;
        if (textBox1.Text == "0")
        {
            label17.Content = "No Hourly wage was set.";
        }
    }


    public int Convert(String S)
    {
        int i = int.Parse(S);
        return i;
    }


    // Input Validation For Excepting Integers Only!
    private void input(object sender, TextCompositionEventArgs e)
    { CheckIsNumeric(e); }
    private void CheckIsNumeric(TextCompositionEventArgs e)
    {
        int result; if (!(int.TryParse(e.Text, out result) || e.Text == "."))
        { e.Handled = true; MessageBox.Show("Numbers Only"); }

    }


    private void startTextBox_TextChanged(object sender, TextChangedEventArgs e)
    {

        button1.IsEnabled = true;
    }




}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我偏爱纯白色 2024-12-10 21:18:17

这是范围问题。您没有显示 Button1 的定义位置。但是在您的事件处理程序 startTextBox_TextChanged 中,找不到 button1 定义(实际上它也需要实例化)。由于您尝试调用尚未实例化的对象 (button1) 上的方法,因此引发了该异常。

如果您发布的不仅仅是这些片段,我或其他人可能能够进一步帮助您。

It's the scope problem. You didn't show where button1 is defined. But inside your event handler startTextBox_TextChanged, button1 definition is nowhere to be found (actually it needs to be instantiated as well). Since you try to invoke a method on an object (button1) which has not been instantiated yet, that exception was thrown.

If you post more than just those snippets, either I or someone else might be able to further help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文