using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO;
namespace shop_management
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public class user
{
public string İsim { set; get; }
public string Borç { set; get; }
}
public class item
{
public string Tehlike { set; get; }
public string İsim { set; get; }
public decimal Birim { set; get; }
public decimal Miktar { set; get; }
}
public MainWindow()
{
this.InitializeComponent();
if (!(File.Exists("C:\\data\\users"))) //here the software checks if the files exist or not
{
MessageBox.Show("Error!!!");
this.Hide();
}
if (!(File.Exists("C:\\data\\items")))
{
MessageBox.Show("Error!!!");
this.Hide();
}
string dan_in="";
StreamReader sr_main;
int i = 0,j=0;
List<item> list_items = new List<item>();
string first_read;
sr_main = File.OpenText("C:\\data\\items"); //this is the file that we take our items data
first_read = sr_main.ReadToEnd();
string[] manip_read = first_read.Split('\t'); //in the file, there is only "/t"s between datas. for example "name1/tprice1/tcount1/tdanger1t/name2/tprice2/tcount2/tdanger2" etc.
item[] items = new item[300]; //here i declared a 300 items long array, which means the software will crash if there is 301, solve this!
foreach (string line in manip_read)
{
if (i == 0) items[j].İsim = line; //this line keeps record of the items name
if (i == 1) items[j].Birim = Convert.ToDecimal(line); // this line keeps the price
if (i == 2) items[j].Miktar = Convert.ToDecimal(line); // this line keeps how many left
if (i == 3) items[j].Tehlike = line; //and this line keeps the danger level
i++;
if (i == 4) //here the loop adds the data to list
{
if (items[j].Miktar < Convert.ToDecimal(items[j].Tehlike) || items[j].Miktar == Convert.ToDecimal(items[j].Tehlike)) dan_in = "!!!";
list_items.Add(new item() { İsim = items[j].İsim, Miktar =items[j].Miktar , Birim=items[j].Birim, Tehlike=dan_in });
dan_in = "";
i = 0;
j++;
}
}
grid_items.ItemsSource = list_items;
}
}
}
Здесь проблема в том, что я запускал эту часть программного обеспечения раньше, но без массива элементов [300]. В то время есть только один экземпляр элемента, но теперь мне также нужно держать их в массиве. Кажется, что есть ошибка с первым оператором if, который пытается присвоить имя İsim значение первого элемента (item [0]).Невозможно назначить данные массиву объектов в WPF с помощью C#
спасибо за любую помощь
+1 для 'С учетом вашего текущего кода' :-) –
ОК, чем я считаю, что мой код не является« debugabble »: D спасибо в любом случае: D – gkaykck
@gkaykck: Да, я серьезно подумал бы о попытке реорганизовать ваш код, чтобы быть более читаемым. Такие вещи, как только объявление переменных, когда они вам нужны, и разбиение методов на более мелкие. –