Inlägg

Inlägg som atombari22 har skrivit i forumet
Av atombari22

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Data; using System.IO; namespace AdressBook_2 { public partial class Form1 : Form { //Vägen till filen public string path = @C:\temp\AdressBok.txt; //Listan där läggs till användaren public List<Person> personer = new List<Person>(); bool start = false; 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(); textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); textBox4.Clear(); textBox5.Clear(); textBox6.Clear(); } public void Form1_Load(object sender, EventArgs e) { //Läser allt från txt filen och lägger till listan 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(); //Ä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) { //Läser in klassen och läggs till värde Person person = new Person(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, textBox6.Text); personer.Add(person); //Om Register metoden går genom då rensas alla rutor 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(); //Vissar allt från txt filen i listBoxen 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) { //Tömmer tidigare sökresultat listBox1.Items.Clear(); string text = textBox7.Text; if (text == "") { MessageBox.Show("Finns ej"); } else { 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; textBox7.Clear(); } } } } private void Ta_bortknap_Click(object sender, EventArgs e) { } private void Sparaknap_Click(object sender, EventArgs e) { } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { foreach(Person person in personer) { if (listBox1.SelectedItem == person.Name.ToString()|| listBox1.SelectedItem == person.Gatu.ToString() || listBox1.SelectedItem == person.Postnr.ToString()|| listBox1.SelectedItem == person.Postort.ToString()|| listBox1.SelectedItem == person.Telefon.ToString() || listBox1.SelectedItem == person.Email.ToString()) { MessageBox.Show(person.Name + " " + person.Gatu + " " + person.Postnr + " " + person.Postort + " " + person.Telefon + " " + person.Email); textBox1.Text = person.Name.ToString(); textBox2.Text = person.Gatu.ToString(); textBox3.Text = person.Postnr.ToString(); textBox4.Text = person.Postort.ToString(); textBox5.Text = person.Telefon.ToString(); textBox6.Text = person.Email.ToString(); } } } } }

Jag försöker adda ta bort knappen och spara knappen men så fort jag försöker att skriva någon kod då får jag oftast fel att det går inte att : „Unable to cast object of type 'System.String' to type 'AdressBook_2.Person'.”

private void Ta_bortknap_Click(object sender, EventArgs e) { // personer.Remove((Person)listBox1.SelectedItem).ToString(); personer.Remove((Person)listBox1.SelectedItem); listBox1.DataSource = null; listBox1.DataSource = personer; start = true; foreach (var c in this.Controls.OfType<TextBox>()) { c.Clear(); } }

Av atombari22

Nu har jag problem med att redigera och radera från txt fillen

Av atombari22

foreach(Person person in personer) { if (listBox1.SelectedItem == person.Name.ToString()|| listBox1.SelectedItem == person.Gatu.ToString() || listBox1.SelectedItem == person.Postnr.ToString()|| listBox1.SelectedItem == person.Postort.ToString()|| listBox1.SelectedItem == person.Telefon.ToString() || listBox1.SelectedItem == person.Email.ToString()) { MessageBox.Show(person.Name + " " + person.Gatu + " " + person.Postnr + " " + person.Postort + " " + person.Telefon + " " + person.Email); textBox1.Text = person.Name.ToString(); textBox2.Text = person.Gatu.ToString(); textBox3.Text = person.Postnr.ToString(); textBox4.Text = person.Postort.ToString(); textBox5.Text = person.Telefon.ToString(); textBox6.Text = person.Email.ToString(); } }

Typ sådär?

Av atombari22

Jag förstår med hur ska jag göra det? skulle du kunna skriva koden åt mig? För att det ligger lite över mina kunskaper med det skulle var bra att kunna lära sig.

Av atombari22

Tack för hjälpen. Nu har jag fastand med SelectedIndexChnage jag får error

"System.InvalidCastException: „Unable to cast object of type 'System.String' to type 'AdressBook_2.Person'.”

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { 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; }

Av atombari22

Jag har pluggat programmering i 2 veckor tyvärr jag kan inte allt försöker att lära mig.

Hur ska jag lägga personen i listan ? för att det ska fungera? vart ska jag skriva det?

Och hur kan jag t.ex radera en kontakt från txt filen?
och hur kan jag ändra kontakten som är sparat i txt filen?

Av atombari22

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; } } } }

Av atombari22

Känns som att Mjukvaruutvecklare, Inbyggda system och IoT passar mig mest men det jag är bekymmer om att det blir svårt att hitta jobb efter skolan.

Av atombari22

Tack för svaret. I så fall vilken skola är bättre Nackademi eller Stockholms tekniska institut ?

Av atombari22

YH tips

Hej, snart är det dags att välja en yrkeshögskoleutbildnig. Har ni några tips vilken tycker ni är bäst och vilken skola tycker ni är bättre Nackademi eller Stockholms tekniska institut ?

Jag får välja mellan

Nackademi:
IT-infrastrukturspecialist
Programutvecklare .NET
Mjukvaruutvecklare, Inbyggda system och IoT
Kvalitetssäkrare och testare inom IT
Javautvecklare
Webbutvecklare .NET

Stockholms tekniska institut:
OS/Android Developer
IoT-utvecklare

Tack för alla svar

Av atombari22

Tack så mycket för hjälpen allt fungerar som det ska <3

Av atombari22

Jag tror att

bloggList.Add(bloggInfo);

var det som saknades men bloggInfo får fel meddelande.

Error CS1503 Argument 1: cannot convert from 'string[]' to 'string'

static void SkrivInlägg() { //Används för att lagra dagens tid och datum för blogginlägg. string[] bloggInfo = new string[3]; Console.WriteLine("Skriv in bloggtitel"); bloggInfo[0] = Console.ReadLine(); Console.WriteLine("Skriv in bloggtext"); bloggInfo[1] = Console.ReadLine(); //Lägger till datumet och tidpunkt för inlägget. bloggInfo[2] = "Datum & klockslag " + (datum = DateTime.Now); //Lägger till min vektor med dess element i stringvektorlistan. bloggList.Add(bloggInfo); Console.WriteLine("Ett nytt Blogginlägg är nu sparat! :D"); }

Av atombari22

Toppen! alla fel försvann men.... fortforande allt jag skriver i "case1" titel osv. Hittas inte i "case 2" samt "case 3". Vad är det som jag missar? Jag klistar in hela koden.

class Program { static List<string> bloggList = new List<string>(); static DateTime datum = DateTime.Now; static void Main(string[] args) { //Använder boll för att ta kontroll över loopen. bool myBool = true; //Används för inmatning för att komma fram till olika menyval. int menyVal = 0; while (myBool) { //Metod som vi skrev längs ner vilken ska printa ut en meny tack för det koden är lite mer läsbar. bloggMenu(); //TryParse används för att förhindra körtidsfel. Användaren ska bara knappa in siffror mellan 1-5. int.TryParse(Console.ReadLine(), out menyVal); //Meny baserad switch-sats vilken är bäst lämad för menyer. switch (menyVal) { //Case 1 innehåller koden för menyval 1. Här ska användaren skriva bloggtitel samt bloggtext vilken är sedan sparat i en vektorlista. case 1: SkrivInlägg(); break; //Case 2 innehåller linjärsökalgoritm vilken tillåtter användaren söka genom vektorlistan efter bloggtitel. case 2: SökInlägg(); break; //Case 3 allt från bloggList skrivs ut. case 3: SkrivUtinlägg(); break; //Case 4 rensar bloggList innehållet. case 4: bloggList.Clear(); Console.Clear(); Console.WriteLine("\nBloggens innehål är nu rensat"); break; //Case 5 programmet avslutas. myBool blir false alltså vilkor för loopen tar slut. case 5: Console.WriteLine("Programmet avslutas!!"); myBool = false; break; //Menyval utanför 1-5 hänvisas till default där felmdeddelandet presenteras default: Console.WriteLine("\nFelmeddelande! Välj mellan 1-5 som menyval !"); break; } Console.WriteLine("\nTryck ENTER för att gå tillbaka till meny"); Console.ReadLine(); } } //Skapar en metod som skapar meny. Användes void bara för att metoden gör sin funktion. Syftet är att göra koden lite renare. static void bloggMenu() { Console.Clear(); Console.WriteLine("\n\t#############################\n\t Välkommen till Bloggen\n\t#############################"); Console.WriteLine("\n\t [1] Skriv ett nytt blogginlägg"); Console.WriteLine("\n\t [2] Sök efter blogginlägg"); Console.WriteLine("\n\t [3] Skriv ut alla sparade blogginlägg"); Console.WriteLine("\n\t [4] Rensa bloggens innehåll"); Console.WriteLine("\n\t [5] Avlusta"); Console.WriteLine("\n\t#############################"); Console.Write("\nSkriv en siffra 1-5: "); } //Skapar metod för case till switch-satsen static void SkrivInlägg() { //Används för att lagra dagens tid och datum för blogginlägg. Console.Clear(); string[] bloggInfo = new string[3]; Console.WriteLine("Skriv in bloggtitel"); bloggInfo[0] = Console.ReadLine(); Console.WriteLine("Skriv in bloggtext"); bloggInfo[1] = Console.ReadLine(); //Lägger till datumet och tidpunkt för inlägget. bloggInfo[2] = "Datum & klockslag " + (datum = DateTime.Now); } static void SökInlägg() { //Skapar stringvektorlista för att spara textsträngar. Console.WriteLine("Skriv in bloggtitel du söker"); string sökord = Console.ReadLine(); bool knapp = false; for (int i = 0; i < bloggList.Count; i++ ) { if (sökord.ToUpper() == bloggList[i][0].ToString().ToUpper()) { knapp = true; Console.WriteLine("Blogginlägget hittades! " + "Bloggtitel: " + bloggList[i][0] + "Bloggtext: " + bloggList[i][1] + " !"); Console.ReadLine(); } } if (knapp == false) { Console.WriteLine("Sökordet hittades inte !"); Console.ReadLine(); } } static void SkrivUtinlägg() { for (int i = 0; bloggList.Count > i; i++) { Console.WriteLine(bloggList[i][2]); Console.WriteLine("Blogginlägg " + (i + 1)); Console.WriteLine("\nBloggtitel " + bloggList[i][0]); Console.WriteLine("\nBlogtext " + bloggList[i][1]); Console.ReadLine(); } } } }

Av atombari22

Efter jag har deklarerat bloggList övanför då får sånt fel.
Error CS0120 An object reference is required for the non-static field, method, or property

class Program { List<string> bloggList = new List<string>(); DateTime datum = DateTime.Now; static void Main(string[] args) {

Av atombari22

Meny och metoder

Hej jag håller på att plugga programering 1 och fastnade på en uppgift. Jag vet inte ens om det är möjlight men kan man koppla metoder på något sätt? Problemet är att allt i "case 1" man skriver typ syns inte i "case 2".

DateTime datum = DateTime.Now; List<string> bloggList = new List<string>(); bool myBool = true; int menyVal = 0; while (myBool) { bloggMenu(); int.TryParse(Console.ReadLine(), out menyVal); switch (menyVal) { case 1: SkrivInlägg(); break; case 2: SökInlägg(); break; static void bloggMenu() { Console.Clear(); Console.WriteLine("\n\t#############################\n\t Välkommen till Bloggen\n\t#############################"); Console.WriteLine("\n\t [1] Skriv ett nytt blogginlägg"); Console.WriteLine("\n\t [2] Sök efter blogginlägg"); Console.WriteLine("\n\t [3] Skriv ut alla sparade blogginlägg"); Console.WriteLine("\n\t [4] Rensa bloggens ineehåll"); Console.WriteLine("\n\t [5] Avlusta"); Console.Write("\nSkriv en siffra 1-5: "); } static void SkrivInlägg() { DateTime datum = DateTime.Now; Console.Clear(); string[] bloggInfo = new string[3]; Console.WriteLine("Skriv in bloggtitel"); bloggInfo[0] = Console.ReadLine(); Console.WriteLine("Skriv in bloggtext"); bloggInfo[1] = Console.ReadLine(); bloggInfo[2] = "Datum & klockslag " + (datum = DateTime.Now); static void SökInlägg() { List<string> bloggList = new List<string>(); Console.WriteLine("Skriv in bloggtitel du söker"); string sökord = Console.ReadLine(); bool knapp = false; for (int i = 0; i < bloggList.Count; i++ ) { if (sökord.ToUpper() == bloggList[i][0].ToString().ToUpper()) { knapp = true; Console.WriteLine("Blogginlägget hittades! " + "Bloggtitel: " + bloggList[i][0] + "Bloggtext: " + bloggList[i][1] + " !"); Console.ReadLine(); } } if (knapp == false) { Console.WriteLine("Sökordet hittades inte !"); Console.ReadLine();