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




}

}

4

1 に答える 1

1

範囲の問題です。button1 が定義されている場所を示していません。しかし、イベント ハンドラーstartTextBox_TextChanged内では、button1 の定義が見つかりません (実際には、インスタンス化する必要もあります)。まだインスタンス化されていないオブジェクト (button1) でメソッドを呼び出そうとしたため、その例外がスローされました。

これらのスニペット以外を投稿すると、私または他の誰かがさらにあなたを助けることができるかもしれません.

于 2011-09-08T03:50:30.417 に答える