Deaktivert Konto Skrevet 28. november 2010 Del Skrevet 28. november 2010 Er det noen som kan hjelpe meg med koden til dette? Skal ha to tekstbokser og en submit-knapp. Én string skrives inn i hver tekstboks, og sendes inn til programmet når du trykker på submit-knappen, og lagres som to stringer der. Virker enkelt, men jeg har ikke erfaring. På forhånd takk, DarkLightA Lenke til kommentar
GeirGrusom Skrevet 28. november 2010 Del Skrevet 28. november 2010 (endret) static void Main() { Form disp = new Form() { Text = "Hello World!", Size = new System.Drawing.Size(178, 100), FormBorderStyle = FormBorderStyle.FixedDialog, MaximizeBox = false }; TextBox box1 = new TextBox() { Bounds = new System.Drawing.Rectangle(8, 8, 150, 0) }, box2 = new TextBox() { Bounds = new System.Drawing.Rectangle(8, 30, 150, 0) }; var submit = new Button() { Text = "Submit!", Bounds = new System.Drawing.Rectangle(8, 50, 150, 20) }; submit.Click += (sender, e) => Perform(box1.Text, box2.Text); disp.Controls.AddRange(new Control[] { box1, box2, submit }); disp.ShowDialog(); } static void Perform(string val1, string val2) { } Hvis du bruker GUI designeren er det litt enklere dog. Bare sett ut kontrollene slik du vil ha dem, kall dem det du vil, og dobbeltklikk på Submit knappen. Da får du opp kode-editoren for Click eventet til knappen. Endret 28. november 2010 av GeirGrusom Lenke til kommentar
HDSoftware Skrevet 29. november 2010 Del Skrevet 29. november 2010 (endret) static void Main() { Form disp = new Form() { Text = "Hello World!", Size = new System.Drawing.Size(178, 100), FormBorderStyle = FormBorderStyle.FixedDialog, MaximizeBox = false }; TextBox box1 = new TextBox() { Bounds = new System.Drawing.Rectangle(8, 8, 150, 0) }, box2 = new TextBox() { Bounds = new System.Drawing.Rectangle(8, 30, 150, 0) }; var submit = new Button() { Text = "Submit!", Bounds = new System.Drawing.Rectangle(8, 50, 150, 20) }; submit.Click += (sender, e) => Perform(box1.Text, box2.Text); disp.Controls.AddRange(new Control[] { box1, box2, submit }); disp.ShowDialog(); } static void Perform(string val1, string val2) { } Hvis du bruker GUI designeren er det litt enklere dog. Bare sett ut kontrollene slik du vil ha dem, kall dem det du vil, og dobbeltklikk på Submit knappen. Da får du opp kode-editoren for Click eventet til knappen. WOW! du ække snau :-D Du kliner til med program teknisk vindus design og lambda expressions. hehe.... @Trådstarter: Hva kan du fra før av programmering? Har du tidligere erfaring? Har du masse erfaring, men ikke kjenner C# så er eksemplet til GG veldig bra. Faktisk så bra at jeg nesten må applaudere ;-) Men er du helt ukjennt med alt dette så er den raske veien slik som GG også påpeker. Tegn vinduet i designeren, dobbeltklikk på knapppen og legg inn koden: MinString1 = txtTextBox1.Text; MinString2 = txtTextBox2.Text; Legg merke til at txtTextBox1 og txtTextBox2 er tekst kontrollene du har laget i vinduet og at Text er selve propertien som holder på det brukeren haar tastet. edit: Uhm, glemte jo å si at du må definere disse to strengene også da, men du visste kansje det allerede.... Endret 29. november 2010 av HDSoftware Lenke til kommentar
HDSoftware Skrevet 29. november 2010 Del Skrevet 29. november 2010 Okay da. Så det andre innlegget nå. Ser at trådstarter har kode erfaring ;-) Lenke til kommentar
Deaktivert Konto Skrevet 29. november 2010 Forfatter Del Skrevet 29. november 2010 Nei, faktisk har jeg ikke erfaring. Jeg kan bare matte Det jeg kan er å lage en Windows Form Application i Visual C#, og deretter dobbelklikke submit-knappen for å få inn koden til denne inn til programmet. Alt jeg trenger er koden for at når button1_click eller hva det nå er blir fullført, så sender den inn det som står i textbox1 og 2 til Main(), og lagre det som stringer. Jeg har ingen erfaring med form applications fra før. ---------- Og ett til spørsmål. Hvordan kan jeg bruke .WriteLine til å skrive tekst inni en form application? ---------- Takk for svar. Lenke til kommentar
GeirGrusom Skrevet 29. november 2010 Del Skrevet 29. november 2010 Hva tenker du på? Vil du at et program du starter igjennom System.Diagnostics.Process skal skrive ut til en tekstboks? Eller vil du at når du kaller WriteLine i ditt program, så skal resultatet dukke opp i en tekstboks? Lenke til kommentar
Deaktivert Konto Skrevet 29. november 2010 Forfatter Del Skrevet 29. november 2010 Umm... Det siste. En form skal ha to tekstbokser med en submit-knapp som skal funke slik jeg forklarte over. Lenke til kommentar
GeirGrusom Skrevet 29. november 2010 Del Skrevet 29. november 2010 textbox_resultat.AppendText(val1 + Environment.Newline); textbox_resultat.AppendText(val2 + Environment.Newline); Lenke til kommentar
Deaktivert Konto Skrevet 29. november 2010 Forfatter Del Skrevet 29. november 2010 Vent... Jeg åpner Visual C# Express 2010. Jeg drar to teksbokser og en knapp inn i formen Jeg har denne koden: 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; namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } }} Kan du vise meg akkuratt hvordan den koden skal være for å få valuene i 'textbox1' og 'textbox2' til 'Form1()' ved trykk på 'button1'? Lenke til kommentar
GeirGrusom Skrevet 29. november 2010 Del Skrevet 29. november 2010 Og så må du ha et sted å skrive koden ut. Enten må du skrive kode for å skrive rett på formen eller legge inn kontroller slik at du får gjort det. Eventuelt kan du lage en Console applikasjon, og legge til en Form der, og så skrive til consolen. Lenke til kommentar
Deaktivert Konto Skrevet 29. november 2010 Forfatter Del Skrevet 29. november 2010 Jeg er helt newbie til programmering. Beklager, men det høres gresk ut Lenke til kommentar
GeirGrusom Skrevet 29. november 2010 Del Skrevet 29. november 2010 File->New Project->Console Application Høyreklikk på References i Project Explorer->Add Reference Legg til System.Windows.Forms Høyreklikk på prosjektet->Add New Item->Form Sett opp formen som du vil (legg til Console.WriteLine koden din i button1_Click) private sub button1_Click(object sender, EventArgs e) { Console.WriteLine(textbox1.Text); } Åpne Program.cs Legg til System.Windows.Forms.Application.Run(new Form1()); slik at det står innenfor Main() static void Main() { System.Windows.Forms.Application.Run(new Form1()); } Lenke til kommentar
Deaktivert Konto Skrevet 29. november 2010 Forfatter Del Skrevet 29. november 2010 Tusen takk! Det hjalp veldig! Har et lite problem da. Har kommet til dette: 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; namespace PrimeEye { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string[] returner = new string[2]; returner[0] = textBox1.Text; returner[1] = textBox2.Text; } } } Hvordan får jeg til å sende 'returner' til Main? Lenke til kommentar
MailMan13 Skrevet 29. november 2010 Del Skrevet 29. november 2010 (endret) Du kan ikke returnere som sådan, siden du ikke får Application.Run til å returnere noe. Den bare starter GUI loopen på gjeldende tråd og viser formen som sendes inn. Den vanlige måten å sende noe oppover i dependency-grafen i winforms er i form av events. public partial class Form1 : Form { // Event som kjører når vi er klar til å avlevere noe // Tilordne en tom delegate i bunn gjør at vi slipper å sjekke mot null, og slipper å gjøre dum thread-safety boilerplate rundt hvert eneste kall til den. public event Action<string[]> ItemReady = (x) => { }; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string[] returner = new string[2]; returner[0] = textBox1.Text; returner[1] = textBox2.Text; ItemReady(returner); } } Klassen med main-metoden ser da noe f.eks sånt ut om den skal ta noe tilbake: static class Program { static void Main() { var mainForm = new Form1(); // Når mainform er klar til å avlevere noe skal vi kjøre ItemReturned // Kan ta hvilke som helst delegate/metode som er parametrisk lik Action<string> mainForm.ItemReady += ItemReturned ; Application.Run(mainForm); } static void ItemReturned(string[] values) { Console.WriteLine("Returnert..."); } } Endret 30. november 2010 av MailMan13 Lenke til kommentar
Deaktivert Konto Skrevet 30. november 2010 Forfatter Del Skrevet 30. november 2010 Hvor kom ItemToReturn fra? Lenke til kommentar
MailMan13 Skrevet 30. november 2010 Del Skrevet 30. november 2010 (endret) Typo, rettet. Endret 30. november 2010 av MailMan13 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå