Ошибка исключения в c # - PullRequest
       1

Ошибка исключения в c #

0 голосов
/ 25 апреля 2010
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace FoolballLeague
{
    public partial class MainMenu : Form
    {
        FootballLeagueDatabase footballLeagueDatabase;
        Game game;
        Login login;

        public MainMenu()
        {
            InitializeComponent();
            changePanel(1);
        }

        public MainMenu(FootballLeagueDatabase footballLeagueDatabaseIn)
        {
            InitializeComponent();
            footballLeagueDatabase = footballLeagueDatabaseIn;
        }

        private void Form_Loaded(object sender, EventArgs e)
        {
        }



        private void gameButton_Click(object sender, EventArgs e)
        {
            int option = 0;
            changePanel(option);
        }
        private void scoreboardButton_Click(object sender, EventArgs e)
        {
            int option = 1;
            changePanel(option);
        }
        private void changePanel(int optionIn)
        {
            gamePanel.Hide();
            scoreboardPanel.Hide();

            string title = "Football League System";

            switch (optionIn)
            {
                case 0:
                    gamePanel.Show();
                    this.Text = title + " - Game Menu";
                    break;
                case 1:
                    scoreboardPanel.Show();
                    this.Text = title + " - Display Menu";
                    break;
            }
        }

        private void logoutButton_Click(object sender, EventArgs e)
        {
            login = new Login();
            login.Show();
            this.Hide();
        }

        private void addGameButton_Click(object sender, EventArgs e)
        {
            if ((homeTeamTxt.Text.Length) == 0)
                MessageBox.Show("You must enter a Home Team");
            else if (homeScoreUpDown.Value > 9 || homeScoreUpDown.Minimum < 0)
                MessageBox.Show("You must enter one digit between 0 and 9");
            else if ((awayTeamTxt.Text.Length) == 0)
                MessageBox.Show("You must enter a Away Team");
            else if (homeScoreUpDown.Value > 9 || homeScoreUpDown.Value < 0)
                MessageBox.Show("You must enter one digit between 0 to 9");
            else 
            {
                //checkGameInputFields();
                game = new Game(homeTeamTxt.Text, int.Parse(homeScoreUpDown.Value.ToString()), awayTeamTxt.Text, int.Parse(awayScoreUpDown.Value.ToString()));
                MessageBox.Show("Home Team -" + '\t' + homeTeamTxt.Text + '\t' + "and" + '\r' + "Away Team -" + '\t' + awayTeamTxt.Text + '\t' + "created");
                footballLeagueDatabase.AddGame(game);

                //clearCreateStudentInputFields();
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            displayDateAndTime();
        }

        private void displayDateAndTime()
        {
            dateLabel.Text = DateTime.Today.ToLongDateString();
            timeLabel.Text = DateTime.Now.ToShortTimeString();
        }

        private void displayResultsButton_Click(object sender, EventArgs e)
        {
            Game game = new Game(homeTeamTxt.Text, int.Parse(homeScoreUpDown.Value.ToString()), awayTeamTxt.Text, int.Parse(awayScoreUpDown.Value.ToString()));

            gameResultsListView.Items.Clear();
            gameResultsListView.View = View.Details;

            ListViewItem row = new ListViewItem();
            row.SubItems.Add(game.HomeTeam.ToString());
            row.SubItems.Add(game.HomeScore.ToString());
            row.SubItems.Add(game.AwayTeam.ToString());
            row.SubItems.Add(game.AwayScore.ToString());

            gameResultsListView.Items.Add(row);
        }

        private void displayGamesButton_Click(object sender, EventArgs e)
        {
            Game game = new Game("Home", 2, "Away", 4);//homeTeamTxt.Text, int.Parse(homeScoreUpDown.Value.ToString()), awayTeamTxt.Text, int.Parse(awayScoreUpDown.Value.ToString()));

            modifyGamesListView.Items.Clear();
            modifyGamesListView.View = View.Details;

            ListViewItem row = new ListViewItem();
            row.SubItems.Add(game.HomeTeam.ToString());
            row.SubItems.Add(game.HomeScore.ToString());
            row.SubItems.Add(game.AwayTeam.ToString());
            row.SubItems.Add(game.AwayScore.ToString());

            modifyGamesListView.Items.Add(row);
        }

       }
    }

Это весь код, и я получил ту же ошибку, что и предыдущий вопрос.

Необработанное исключение произошло в вас приложение. Если вы нажмите ............... нажмите Выйти Приложение будет закрыто немедленно. Ссылка на объект не установлена ​​на экземпляр объекта.

А в сообщении об ошибке указаны следующие данные.

************** Текст исключения ************** System.NullReferenceException: Object ссылка не установлена ​​на экземпляр объект. в FoolballLeague.MainMenu.addGameButton_Click (Объект отправитель, EventArgs e) в C: \ Users \ achini \ Desktop \ FootballLeague \ FootballLeague \ MainMenu.cs: линия 91 в System.Windows.Forms.Control.OnClick (EventArgs есть System.Windows.Forms.Button.OnMouseUp (MouseEventArgs мевент) в System.Windows.Forms.Control.WmMouseUp (Message & m, кнопка MouseButtons, щелчки Int32) в System.Windows.Forms.Control.WndProc (Message & м) в System.Windows.Forms.ButtonBase.WndProc (Message & м) в System.Windows.Forms.Button.WndProc (Message & м) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & м) в System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr LPARAM)

Мне нужно добавить игры к использованию addGameButton, сохранить эти добавленные игры и отобразить их в виде списка (gameResultsListView). Теперь я могу добавить игру и отобразить ее в виде списка. Но когда я нажал кнопку addGameButton, я получил указанное выше сообщение об ошибке.

Если вы можете дать мне решение этой проблемы.

Ответы [ 5 ]

6 голосов
/ 25 апреля 2010

Из сообщения об исключении я вижу, что у вас есть NullReferenceException в addGameButton_Click в строке 91. Это строка 91:

footballLeagueDatabase.AddGame(game);

Так что footballLeagueDatabase равен нулю.Давайте посмотрим код, которому вы его присваиваете:

public MainMenu()
{
    InitializeComponent();
    changePanel(1);
}

public MainMenu(FootballLeagueDatabase footballLeagueDatabaseIn)
{
    InitializeComponent();
    footballLeagueDatabase = footballLeagueDatabaseIn;
}

Я думаю, либо вы вызвали неправильный конструктор, либо вы передали нулевой объект в конструктор.

Этоэто весь код

Нет, это не весь код.У вас должны быть другие файлы в вашем проекте.Ошибка, скорее всего, в одном из этих файлов (тот, который создает эту форму).

4 голосов
/ 25 апреля 2010

Вам нужно научиться читать сообщения об ошибках и трассировки стека.

Посмотрите на этот бит:

System.NullReferenceException: Object reference not set to an instance of an object. at FoolballLeague.MainMenu.addGameButton_Click(Object sender, EventArgs e) in C:\Users\achini\Desktop\FootballLeague\FootballLeague\MainMenu.cs:line 91

Это говорит вам, в какой строке находится ошибка. Это также говорит вам, что это NullReferenceException, что означает, что что-то null, что не должно быть.

Установите точку останова и выполните соответствующий код, изучите, что происходит с переменными, и выясните, как это заканчивается с этим нулевым значением.

3 голосов
/ 25 апреля 2010

Одна из ссылок, к которой вы пытаетесь обратиться, пуста. Он находится на линии 91 в вашем файле MainMenu.cs. Установите точку останова и посмотрите на отладчик, что такое null?

Я бы предположил, что footballLeagueDatabase имеет значение null, вам нужно назначить ему экземпляр типа FootballLeagueDatabase.

2 голосов
/ 25 апреля 2010

Не похоже, что вы инициализируете footballLeagueDatabase в любом месте

2 голосов
/ 25 апреля 2010

Вы уверены, что footballLeagueDatabase инициализируется? Я думаю, что конструктор, в котором вы его инициализируете, никогда не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...