Witam, z góry mówię że jestem bardzo początkujący więc proszę o konkretne wyjaśnienie i podanie rozwiązania jeśli to możliwe.
Kiedy klikam po lewej stronie w oknie na jakaś nazwe to pokazuję mi się ten błąd.
Problem jaki mi się pokazuje to: "System.InvalidCastException: „Unable to cast object of type 'System.String' to type 'AdressBook_2.Person"
namespace AdressBook_2
{
public class Person
{
public string Name { get; set; }
public string Gatu { get; set; }
public string Postnr { get; set; }
public string Postort { get; set; }
public string Telefon { get; set; }
public string Email { get; set; }
public Person(string name, string gatu, string postnr, string postort, string telefon, string email)
{
Name = name;
Gatu = gatu;
Postnr = postnr;
Postort = postort;
Telefon = telefon;
Email = email;
}
public Person()
{
}
public bool Register()
{
string file = @"C:\temp\AdressBok.txt";
using (StreamWriter _writer = new StreamWriter(file, true))
{
//Metoden kollar om email är rätt inskriven då registeras
if (CheckEmail())
{
string row = $"{Name}, {Gatu}, {Postnr}, {Postort}, {Telefon}, {Email}";
_writer.WriteLine(row);
_writer.Close();
return true;
}
else return false;
}
}
public bool CheckEmail()
{
if (Email.Contains('@') && Email.Contains('.'))
{
return true;
}
else
{
MessageBox.Show("Brakuje @");
return false;
}
}
}
}
namespace AdressBook_2
{
public partial class Form1 : Form
{
public string path = @"C:\temp\AdressBok.txt";
public List<Person> personer = new List<Person>();
bool start = false;
public Form1()
{
InitializeComponent();
}
private void Avslutaknap_Click(object sender, EventArgs e)
{
this.Close();
}
private void Rensaknap_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
}
public void Form1_Load(object sender, EventArgs e)
{
Person load;
StreamReader sr = new StreamReader(@"C:\temp\AdressBok.txt");
string line = "";
while (!sr.EndOfStream)
{
load= new Person();
line = sr.ReadLine();
var array = line.Split(',');
load.Name = array[0];
load.Gatu = array[1];
load.Postnr = array[2];
load.Postort = array[3];
load.Telefon = array[4];
load.Email = array[5];
personer.Add(load);
}
sr.Close();
var file = @"C:\temp\AdressBok.txt";
if (!File.Exists(file))
File.Create(file);
}
private void Registeraknap_Click(object sender, EventArgs e)
{
/
Person person = new Person(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text,
textBox6.Text);
personer.Add(person);
if (person.Register())
{
listBox1.Items.Add(person.Name);
//Rensar textbox efter man har tryck register kanpen
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
}
}
private void Ladda_uppknap_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
List<string> lines = File.ReadAllLines(path).ToList();
foreach (string line in lines)
{
listBox1.Items.Add(line);
}
}
private void Sökknap_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
string text = textBox7.Text;
foreach (Person person in personer)
{
if (person.Name.ToLower().Contains(text.ToLower()))
{
listBox1.Items.Add(person.Name);
textBox1.Text = person.Name;
textBox2.Text = person.Gatu;
textBox3.Text = person.Postnr;
textBox4.Text = person.Postort;
textBox5.Text = person.Telefon;
textBox6.Text = person.Email;
}
}
}
private void Ta_bortknap_Click(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
listBox1.SelectedItem.ToString();
Person person = ((Person)listBox1.SelectedItem);
textBox1.Text = person.Name;
textBox2.Text = person.Gatu;
textBox3.Text = person.Postnr;
textBox4.Text = person.Postort;
textBox5.Text = person.Telefon;
textBox6.Text = person.Email;
}
Druga sprawa jak zrobić żeby usuwać wcześniej dodany kontakt? oraz jak go edytować?
Autor żyje (żył) gdzieś w ciepłych krajach ?
Google translator mówi że szwedzki