AdressBok Windows Form
Hej jag behöver hjälp med uppgiften. Kopierar min fråga från engelsk forum så ni kan svara på svenska. Tack
I'm working in Windows Form and I have 6 textboxes
When selecting a contact from the list, the text boxes do not reflect the selection.
I have code like this:
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;
but I'm getting the error;
System.InvalidCastException: "Unable to cast object of type 'System.String' to type 'AdressBook_2.Person'."
How to remove selected item from txt file.
How to save new value in txt file of selected item example if I want to change email of one user?
namespace AdressBook_2
{
public partial class Form1 : Form
{
public string path = @C:\temp\AdressBok.txt;
public Form1()
{
InitializeComponent();
}
private void Avslutaknap_Click(object sender, EventArgs e)
{
//Stänger ner programmet
this.Close();
}
private void Rensaknap_Click(object sender, EventArgs e)
{
//Rensar listBox
listBox1.Items.Clear();
}
public void Form1_Load(object sender, EventArgs e)
{
//Ändrad FormBorderStyle till FixedSingle så att man kan inte ändra storleken
//samt MaximizeBox to False
//Skapar txt fillen
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);
//Om Register metoden går genom då rensas alla rutor
if (person.Register())
{
//Rensar textbox efter man har tryck register kanpen
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
textBox6.Clear();
listBox1.Items.Add(person.Name);
}
}
private void Ladda_uppknap_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
File.ReadAllText(path);
string line;
using (StreamReader reader = new StreamReader(path))
{
while ((line = reader.ReadLine()) != null)
{
listBox1.Items.Add(line);
}
}
}
private void Sökknap_Click(object sender, EventArgs e)
{
//Tömmer tidigare sökresultat
listBox1.Items.Clear();
string sök = textBox7.Text;
string name;
using (StreamReader reader = new StreamReader(path))
{
while ((name = reader.ReadLine()) != null)
{
if (name.Contains(sök))
{
listBox1.Items.Add(name);
}
}
}
}
private void Ta_bortknap_Click(object sender, EventArgs e)
{
}
private void Sparaknap_Click(object sender, EventArgs e)
{
using (StreamWriter writer = new StreamWriter(path))
{
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
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);
return true;
}
else return false;
}
}
public bool CheckEmail()
{
//Kollar up om email innehåller @ och (punkt)
if (Email.Contains('@') && Email.Contains('.'))
{
return true;
}
else
{
MessageBox.Show("Saknas @ eller punkttecken");
return false;
}
}
}
}