как сохранить элементы списка в текстовом файле - PullRequest
0 голосов
/ 10 мая 2011

Я использую .Net 3.5 - у меня проблема при попытке элементов списка в текстовый файл. Я использую этот код:

if (lbselected.Items.Count != 0) {
  string Path = Application.StartupPath + "\\ClientSelected_DCX.txt";
  StreamWriter writer = new StreamWriter(Path);
  int selectedDCXCount = System.Convert.ToInt32(lbselected.Items.Count);
  int i = 0;

  while (i != selectedDCXCount) {
    string selectedDCXText = (string)(lbselected.Items[i]);
    writer.WriteLine(selectedDCXText);
    i++;
  }

  writer.Close();
  writer.Dispose();
}

MessageBox.Show("Selected list has been saved", "Success", MessageBoxButtons.OK);

Произошла ошибка для этой строки:

string selectedDCXText = (string)(lbselected.Items[i]);

Ошибка:

Невозможно привести объект типа 'SampleData' к типу 'System.String'. пожалуйста, помогите мне

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

Использование string selectedDCXText = lbselected.Items[i].ToString();

0 голосов
/ 10 мая 2011
Make sure that you have overridden the ToString method in your SampleData class like below:

                public class SampleData
{

                                // This is just a sample property. you should replace it with your own properties.
                                public string Name { get; set; }

                                public override string ToString()
                                {
                                    // concat all the properties you wish to return as the string representation of this object.
                                    return Name;
                                }

}

Now instead of the following line,
    string selectedDCXText = (string)(lbselected.Items[i]); 
you should use:
    string selectedDCXText = lbselected.Items[i].ToString();

Unless you have ToString method overridden in your class, the ToString method will only output class qualified name E.G. "Sample.SampleData"
0 голосов
/ 10 мая 2011

Вы должны переопределить метод ToString в классе, экземпляры которого вы хотите записать в файл.Внутри метода ToString вы должны отформатировать правильную строку вывода:

class SampleData
{
   public string Name
   {
       get;set;
   }
   public int Id
   {
       get;set;
   }

   public override string ToString()
   {
       return this.Name + this.Id;
   }
}

и затем использовать

string selectedDCXText = (string)(lbselected.Items[i].ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...