Событие _textChanged вызывает ошибку «Ссылка на объект не установлена ​​для экземпляра объекта» - PullRequest
0 голосов
/ 08 сентября 2011

Я новичок в C #, так что все еще нахожу свой путь вокруг.

У меня есть кнопка, которую я хочу включить только тогда, когда пользователь вводит текст в текстовое поле. Я получаю эту ошибку - «Ссылка на объект не установлена ​​на экземпляр объекта».

Вот соответствующий код (без использования и переменных):

    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;
    }




}

}

1 Ответ

1 голос
/ 08 сентября 2011

Это проблема объема. Вы не показали, где определяется button1. Но внутри вашего обработчика событий startTextBox_TextChanged определение button1 нигде не найдено (на самом деле его тоже нужно создать). Поскольку вы пытаетесь вызвать метод для объекта (button1), который еще не был создан, это исключение было сгенерировано.

Если вы публикуете больше, чем просто эти фрагменты, я или кто-то еще можем вам помочь.

...