Member 14876288 Ответов: 2

Мне нужно получить значения из массива, который я хочу поместить в combobox


Проблема в том, что у меня есть код в моей программе, который должен заполнить combobox значениями в массиве, но он, похоже, не работает.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace Arsalan_Salam_991571527_A2
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            AddingEnumIntoComboBox(null);
            AddingIntArrayIntoComboBox(null);
        }
        //private List<Product> _products = new List<Product>();
        private CarRepository _carRepository = new CarRepository();
        private Car CaptureProductInfo()
        {
            string vinNumber = vinNumberInput.Text;
            string carMake = carMakeInput.Text;
            CarType typeOfCar = (CarType)carTypeInput.SelectedItem;
            float purchasePrice = float.Parse(purchasePriceInput.Text);
            int modelYear = Int32.Parse((string)modelYearInput.SelectedItem);
            int mileage = Int32.Parse(mileageInput.Text);
            Car c = new Car(vinNumber, carMake, typeOfCar, purchasePrice, modelYear, mileage);
            AddingIntArrayIntoComboBox(c);
            return c;
        }
        private void RenderProductInfo(Car car)
        {
            vinNumberInput.Text = car.VinNumber;
            carMakeInput.Text = car.CarMake;
            carTypeInput.Text = car.TypeOfCar.ToString();
            purchasePriceInput.Text = car.PurchasePrice.ToString();
            modelYearInput.Text = car.ModelYear.ToString();
            mileageInput.Text = car.Mileage.ToString();
        }
        private void ClearUI()
        {
            vinNumberInput.Text = "";
            carMakeInput.Text = "";
            carTypeInput.Text = "";
            purchasePriceInput.Text = "";
            modelYearInput.Text = "";
            mileageInput.Text = "";
            errorMessageOutput.Text = "";
        }
        private void OnCarSelectionChanged()
        {
            //1. get the selected product
            Car c = (Car)lstCarDetailOutput.SelectedItem;

            //2. render the fields in the textboxes
            RenderProductInfo(c);
        }
        private void AddingEnumIntoComboBox(object p)
        {
            foreach (var item in Enum.GetValues(typeof(CarType)))
            {
                var carTypeName = Enum.GetName(typeof(CarType), item);
                carTypeInput.Items.Add(carTypeName);
            }
        }
        private void AddingIntArrayIntoComboBox(Car c) 
        {
            for (int i = 0; i < c._modelYear.Length; i++)
            {
                int year = c._modelYear[i];
                modelYearInput.Items.Add(year);
            }
        }
        private void addingCar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //_products.Add(CaptureProductInfo());
                Car c = CaptureProductInfo();
                _carRepository.AddProduct(c);
                lstCarDetailOutput.Items.Add(c);//the advantage of adding Product rather than a string?
            }
            catch (Exception ex)
            {
                errorMessageOutput.Text = ex.Message;
            }
            //
        }
        private void clearing_Click(object sender, RoutedEventArgs e)
        {
            ClearUI();
        }
        private void updatingCar_Click(object sender, RoutedEventArgs e)
        {
            OnCarSelectionChanged();
        }
    }
}



Вот и весь код

Что я уже пробовал:

У меня был другой способ заполнения моего второго combobox который называется modelYearInput и код который я использую для этого как показано ниже:

private void AddingIntArrayIntoComboBox(Car c) 
        {
            for (int i = 0; i < c._modelYear.Length; i++)
            {
                int year = c._modelYear[i];
                modelYearInput.Items.Add(year);
            }
        }


Заранее благодарю вас за любую помощь

2 Ответов

Рейтинг:
2

OriginalGriff

"Это не работает", вероятно, самый бесполезный отчет о проблеме, который мы получаем - и мы получаем его много. Она ничего не говорит нам о том, что происходит или когда это происходит.
Итак, расскажите нам, что он делает, чего вы не ожидали, или не делает, что вы сделали.
Расскажите нам, что вы сделали, чтобы это произошло.
Сообщайте нам о любых сообщениях об ошибках.

В то же время вам нужно посмотреть, почему "это не работает" - и мы не можем сделать это для вас, у нас нет ваших данных.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Рейтинг:
0

Patrice T

Цитата:
Проблема в том, что у меня есть код в моей программе, который должен заполнить combobox значениями в массиве, но он, похоже, не работает.

Не предполагайте, убедитесь сами. Есть 1 инструмент, который может вам помочь, то отладчик.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

Отладка кода C# в Visual Studio - YouTube[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.