Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Leggere textbox e metterlo in una stringa...
Forum - C# / VB.NET - [C#] Leggere textbox e metterlo in una stringa...

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve, volevo sapere se mi potete dare una mano ho questo codice,
che va leggere un  codice nell'area textbox ma mi dice errore di index e formato input non valido.
Mi dite come posso risolverlo?

Codice sorgente - presumibilmente C++

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             this.picBox.Image = null;
  4.             Bitmap bmp = new Bitmap(picBox.Width, picBox.Height);
  5.  
  6.             Graphics g = Graphics.FromImage(bmp);
  7.             Pen redPen = new Pen(Color.Red, 1 / g.DpiX);
  8.             redPen.Width = 2;
  9.             g.TranslateTransform(1, 1.0f);
  10.             g.PageUnit = GraphicsUnit.Pixel;
  11.  
  12.             //            StreamReader sr = new StreamReader("TextFile1.txt");
  13.             int x = 0;
  14.             int y = 0;
  15.             int x1 = 0;
  16.             int y1 = 0;
  17.  
  18.             string txt = "Disegnata linea: ({0},{1}:{2},{3})";
  19.             string coord = "" + textBox1.Text + "";         // QUI DEVO METTERE i valori che prendo dal file txt con il pulsante apri file txt.
  20.             int ypos = coord.IndexOf('Y');
  21.             x = Convert.ToInt32(coord.Substring(1, ypos - 1));
  22.             y = Convert.ToInt32(coord.Substring(ypos + 1));
  23.             // ---- ----
  24.             g.DrawLine(redPen, x1, y1, x, y);
  25.             lbl.Text = string.Format(txt, x1, y1, x, y);
  26.  
  27.             x1 = x; // x1 contiene il valore x di partenza per la prossima linea
  28.             y1 = y; // y1 contiene il valore y di partenza per la prossima linea
  29.  
  30.  
  31.             picBox.Image = bmp;
  32.             //lbl.Text = "Fatto.";
  33.             redPen.Dispose();
  34.             g.Dispose();
  35.  
  36.         } // button1_click




   string coord = "" + textBox1.Text + "";         // QUI DEVO METTERE i valori che prendo dal file txt con il pulsante apri file txt.


Però se faccio cosi mi da errori di eccezione non gestita qunado premo sul pulsante.

Mi date una mano?

grazie mille.,, e buona giornata.

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 8:35
Venerdì, 12/03/2010
Errore di index è nella chiamata a Substring, formato non valido in Int32.Parse. E per generare tutti gli errori che hai riportato, l'unica spiegazione è che la textbox sia vuota (in questo modo, se Text è null, darà un errore a runtime).
I primi due possono anche essere generati se sbagli ad usare substring e prendi un pezzo sbagliato di stringa, quindi ti consiglio di controllare con variabili temporanee quello che effettivamente vuoi estrarre.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:01
Venerdì, 12/03/2010
Testo quotato

Postato originariamente da Il Totem:

Errore di index è nella chiamata a Substring, formato non valido in Int32.Parse. E per generare tutti gli errori che hai riportato, l'unica spiegazione è che la textbox sia vuota (in questo modo, se Text è null, darà un errore a runtime).
I primi due possono anche essere generati se sbagli ad usare substring e prendi un pezzo sbagliato di stringa, quindi ti consiglio di controllare con variabili temporanee quello che effettivamente vuoi estrarre.



ciao, ho provato un'altro modo, ma ora sono nel pallone,che non so come far mettere le coordinate dentro ad questo codice:

Codice sorgente - presumibilmente C++

  1. private void Simula_Click(object sender, EventArgs e)
  2.         {
  3.             Graphics g = box.CreateGraphics();
  4.             Pen redPen = new Pen(Color.Red, 1 / g.DpiX);
  5.             redPen.Width = 2;
  6.          
  7.             g.PageUnit = GraphicsUnit.Pixel;
  8.  
  9.             List<PointF> pt = new List<PointF>();
  10.             int x = 120;
  11.             int y = 120;
  12.            
  13.             PointF p = new PointF(x, y);
  14.             pt.Add(p);
  15.             Pen pen = new Pen(Color.Black, 3);
  16.             g.DrawLine(pen, 0, 0, p.X,p.Y);
  17.         }



Per l'errore che dicevi la textbox è piena , ma è in formato cosi:
X11Y100
X100Y100
X100Y01
X100Y100

E mi da errore su indice ,input non valido...

Mi sai spiegare come fare con il secondo codice che ho postato con il pulsante simula_click.

grazie.

Ultima modifica effettuata da il 12/03/2010 alle 13:02
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:11
Venerdì, 12/03/2010

grazie mille per l'aiuto.

Ultima modifica effettuata da il 12/03/2010 alle 13:38
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:31
Venerdì, 12/03/2010
nessuno sa come posso fare per prendere i valori dalla textbox tbcode.text?

Aspetto risposta..e buona giornata.

Ultima modifica effettuata da il 12/03/2010 alle 15:32
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:16
Domenica, 14/03/2010
Dato che la lunghezza dei valori numerici cambia, non puoi usare Substring. Devi passare alle espressioni regolari:
Codice sorgente - presumibilmente VB.NET

  1. Dim Coord As New Regex("X(?<CoordX>\d+)Y(?<CoordY>\d+)")
  2. Dim Mc As MatchCollection = Coord.Matches(TextBox.Text)
  3.  
  4. For Each M As Match In Mc
  5.    Dim X As Int32 = CType(M.Groups("CoordX").Value, Int32)
  6.    Dim Y As Int32 = CType(M.Groups("CoordY").Value, Int32)
  7.    '...
  8. Next


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:37
Domenica, 14/03/2010
Testo quotato

Postato originariamente da Il Totem:

Dato che la lunghezza dei valori numerici cambia, non puoi usare Substring. Devi passare alle espressioni regolari:
Codice sorgente - presumibilmente VB.NET

  1. Dim Coord As New Regex("X(?<CoordX>\d+)Y(?<CoordY>\d+)")
  2. Dim Mc As MatchCollection = Coord.Matches(TextBox.Text)
  3.  
  4. For Each M As Match In Mc
  5.    Dim X As Int32 = CType(M.Groups("CoordX").Value, Int32)
  6.    Dim Y As Int32 = CType(M.Groups("CoordY").Value, Int32)
  7.    '...
  8. Next



oo, grazie mille, però in vb.net non capisco molto,
mi dici un buon convertitore che converte da vb.net a c#.

grazie mille.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 17:13
Domenica, 14/03/2010
ciao, forse c'è lo fatta in un'atlro modo.

in poche parole leggo il file preso dalla statusbar .file

Codice sorgente - presumibilmente C++

  1. private void Elabora__Tick(object sender, EventArgs e)
  2.         {
  3.             List<PointF> pt = new List<PointF>();
  4.             this.box.Image = null;
  5.  
  6.             Bitmap bmp = new Bitmap(this.box.Width / 5, this.box.Height / 5);
  7.             Graphics g = Graphics.FromImage(bmp);
  8.             Pen redPen = new Pen(Color.Red, 1 / g.DpiX);
  9.             redPen.Width = 2;
  10.  
  11.             g.PageUnit = GraphicsUnit.Millimeter;
  12.             using (StreamReader sr = new StreamReader("" + sbp_file.Text + ""))
  13.             {
  14.                 string[] coordinate;
  15.                  while (!sr.EndOfStream)
  16.                 {
  17.                     coordinate = sr.ReadLine().Split(','); // tra apici va il carattere che separa i valori
  18.                     int x = Convert.ToInt32(coordinate[0]); // convertiamo in valori numerici interi, ma DrawLine accetta anche float
  19.                     int y = Convert.ToInt32(coordinate[1]); // convertiamo in valori numerici interi, ma DrawLine accetta anche float
  20.  
  21.                     PointF p = new PointF(x, y);
  22.                     pt.Add(p);
  23.  
  24.  
  25.                     Pen pen = new Pen(Color.Black, 3);
  26.  
  27.                     g.DrawLine(pen, 0, 0, p.X, p.Y);
  28.                     }
  29.                 redPen.Dispose();
  30.                 g.Dispose();
  31.                 sr.Close();
  32.                 sr.Dispose();
  33.             } this.box.Image = bmp;
  34.  
  35.  
  36.         }



Però non so perchè non segue 1 passo alla volta , mettendolo nella tick del timer.

Mi dici come fare per seguire passo per passo le coordinate.

questo è il mio nuovo formato di coordinate:
100,0
100,100
0,100
0,0
Mi disegna un rettangolo, però io devo simulare questo:
in poche parole vedete questo video: http://www.youtube.com/watch?v=fmRpF3Q94tg

Scusate ma non ho trovato meglio.

Però vorrei fare la stesa cosa ma in c# e con il mio formato di coordinate.

Mi proteste aiutare?.

grazie.

Ultima modifica effettuata da il 14/03/2010 alle 17:21
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 18:33
Lunedì, 15/03/2010
Tu stai solo disegnando delle linee che si originano nello stesso punto (0,0), il che ovviamente non è un rettangolo. Perchè non metti tutto in una lista e solo DOPO aver letto le coordinate fai i disegni?
A parte questo, non ho ben capito cosa vuoi fare, dato che nel video non disegna solo rettangoli.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo