Проблема получения строки из Combobox в переменную класса [C #] - PullRequest
0 голосов
/ 19 ноября 2018

Функция кнопки должна взять любой текст в поле со списком и поместить его в sleeper.traintype

 private void Btn_Apply_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            sleeper.trainType = CmbBox_TrainType.Text;
            if (CmbBox_TrainType.Text == "Sleeper")
            {
                // instantiate the sleeper train
                sleeper.trainType = CmbBox_TrainType.Text;
            }
        }

Мой класс поезда со спящими (наследование от общего класса поезда)

public class Sleeper : Train
{
    private string _intermediate, _intermediate1, _intermediate2, _intermediate3;
    private bool _cabin;
    public string intermediate
    {
        get
        {
            return _intermediate;
        }
        set
        {
            _intermediate = value;
        }
    }

    public string intermediate1
    {
        get
        {
            return _intermediate1;
        }
        set
        {
            _intermediate1 = value;
        }
    }

    public string intermediate2
    {
        get
        {
            return _intermediate2;
        }
        set
        {
            _intermediate2 = value;
        }
    }

    public string intermediate3
    {
        get
        {
            return _intermediate3;
        }
        set
        {
            _intermediate3 = value;
        }
    }

Класс поезда:

 public class Train
{
    private string _trainID, _departureDay, _departureStation, _destinationStation, _departureTime, _trainType;
    private bool _firstClass;

    public string timePunctuation = ":";
    public string dayPunctuation = "/";

    public string trainID
    {
        get
        {
            return _trainID;
        }
        set
        {
            // check if the vlaue has letters & numbers and that the length is correct
            if(value.Length == 4 && Regex.IsMatch(value, "[A-Z][0-9]"))
            {
                _trainID = value;
            }
            else
            {
                throw new FormatException("That train ID is not valid! (Example: AA11)");
            }
        }
    }

    public string departureDay
    {
        get
        {
            return _departureDay;
        }
        set
        {
            if(value.Length == 0)
            {
                throw new FormatException("You need to choose a departure day!");
            } else
            {
                _departureDay = value;
            }
        }
    }

    public string departureTime
    {
        get
        {
            return _departureTime;
        }
        set
        {
            if(value.Length != 5 || value.Contains(timePunctuation) == false)
            {
                throw new FormatException("The time must be in this format: (11:11 or 03:22)");
            } else
            {
                _departureTime = value;
            }
        }
    }

    public string departureStation
    {
        get
        {
            return _departureStation;
        }
        set
        {
            if(value.Length == 0)
            {
                throw new FormatException("You must enter a departure station!");
            } else
            {
                _departureStation = value;
            }
        }
    }

    public string destinationStation
    {
        get
        {
            return _destinationStation;
        }
        set
        {
            if(value.Length == 0)
            {
                throw new FormatException("You must enter a destination!");
            } else
            {
                _departureStation = value;
            }
        }
    }

    public string trainType
    {
        get
        {
            return _trainType;
        }
        set
        {
            value = _trainType;
        }
    }
}

Я использую комбинированный список с тремя опциями "Sleeper", "Stopping" и «Экспресс». При использовании точек останова рядом с sleeper.trainType = CmbBox_TrainType.Text; он создает мой класс, но утверждает, что моя переменная sleeper.trainType равна null. Но это говорит о том, что

CmbBox_TrainType = "Спящий"

Создание спящего в начале с Sleeper sleeper = new Sleeper(); но также пытался поместить его в if и непосредственно перед sleeper.trainType = CmbBox_TrainType.Text;

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