» »

C# textbox polnjenje

C# textbox polnjenje

kitarist ::

Pozdravljeni!

Zanima me, ali je možno napolnit textboxe iz forme s kakšno for zanko? Npr. na formi ustvarim 20 textboxov (textbox1,textbox2,...), v katere bi rad zapisal random stevila. Da pa ne bi za vsak textbox pisal "textbox1.text = (rand()%100).toString()", bi rad uporabil nekakšno zanko, ki bi to naredila namesto mene.

Nekaj v tem smislu textbox[i].text = (rand()%100).toString(); pri cemer je i iz for zanke. Tudi če naredim polje textboxov (Textbox[] t = new Textbox[20]), moram vsakemu priredit še enega iz forme, tako da spet nisem nič profitiral.

Ali obstaja kakšna možnost, ki bi mi olajšala delo?

Hvala za pomoč

Lp

Mitja Bonča ::

Evo to je to. Želiš tudi kodo, ki ti sama ustvari textBoxe?
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 Nov4TextBox
{
    public partial class Form1 : Form
    {
        Random myRandom;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myRandom = new Random();

            TextBox[] arrayTextBox = new TextBox[10] { textBox1, textBox2, textBox3, textBox4, 
                textBox5, textBox6, textBox7, textBox8, textBox9, textBox10 };
            
            for (int i = 0; i < arrayTextBox.Length; i++)
            {
                int intStevilo = DobiStevilo();
                arrayTextBox[i].Text = intStevilo.ToString();
            }            
        }

        private int DobiStevilo()
        {
            
            //števila od 0 - 100:
            return myRandom.Next(100) + 1;
        }
    }
}

Mitja Bonča ::

To bi bila potem celotna koda, še z metodo, ki samodejno ustvari TextBoxe in jih postavi na tvoja željena mesta - jaz sem si zamislim 10 textBoxov, v dveh stoplcih (5,5). Koda jih tako tudi samodejno razvršča.
!!Bodi pozoren na različno oznake v obeh postih pri metodi GumbKlik, in sicer na označitev TextBoxov (array).

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 Nov4TextBox
{
    public partial class Form1 : Form
    {
        TextBox[] textBox;
        Random myRandom;
        public Form1()
        {
            InitializeComponent();
            UstvaritevTextBoxov();
        }

        private void UstvaritevTextBoxov()
        {            
            textBox = new TextBox[10];

            int x= 30;
            int y =30;
            for (int i = 0; i < textBox.Length; i++)
            {
                textBox[i] = new TextBox();
                textBox[i].Name = "textBox" + (i + 1);
                //textBox[i].Text = "textBox" + (i + 1);
                textBox[i].TextAlign = HorizontalAlignment.Center;
                textBox[i].Location = new Point(x, y);
                textBox[i].Size = new Size(100, 20);
                this.Controls.Add(textBox[i]);
                if (i % 2 == 0)
                    x = x + 130;
                else
                {                    
                    y = y + 40;
                    x = 30;
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            myRandom = new Random();

            TextBox[] arrayTextBox = new TextBox[10] { textBox[0], textBox[1], textBox[2], textBox[3], 
                textBox[4], textBox[5], textBox[6], textBox[7], textBox[8], textBox[9] };
            
            for (int i = 0; i < arrayTextBox.Length; i++)
            {
                int intStevilo = DobiStevilo();
                arrayTextBox[i].Text = intStevilo.ToString();
            }            
        }

        private int DobiStevilo()
        {            
            //števila od 0 - 100:
            return myRandom.Next(100) + 1;
        }
    }
}

Zgodovina sprememb…

kitarist ::

Na hitro sem preletel kodo. Mislim, da me ne razumeš. Če ustvarim polje textboxov, moram vsakemu priredit enega. TextBox[0] = textbox1,...ali pa tako, kot si ti napisal Textbox[] t = new TextBox[10]{textbox1,...}

Kaj pa če jih imam 100? Jaz bi rad, da do tistih texbox-ov, ki jih zmečem na formo, dostopam na neki preprost način; preko kakšne zanke.

Hvala in lp

tomaz_sres ::

Kaj pa takole:

foreach (Control ControlOut in this.Controls)
            {

                if (ControlOut.GetType() == typeof(TextBox))
                {
                    ControlOut.Text = "bla bla bla";
                }
            }
Lep pozdrav, Tomaž Sreš, http://www.sres.si

darkolord ::

Raje razmisli, kako bi to naredil drugače. Da se tudi tako, kot si zdaj zamišljaš, ampak je precej verjetno, da obstaja boljši način.

Torej, kaj bi sploh rad naredil?

kitarist ::

Kot na primer? Meni je važno, da ne rabim za vsak textbox posebej nastavljat besedila, ampak, da to naredi zanka.
Če imam 20, 30 ali pa 100 textboxov ne bom za vsakega posebej vpisoval besedila, oz. števila. Mam raje števila v enem polju, pa jih skozi neko zanko vpišem v textboxe.
Gre se za sudoku. Najprej zgeneriram naključna števila, in jih moram vpisat v textboxe in to v 81. Upam, da sem sedaj razumljivo razložil težavo.

@tomaz_sres
To se mi zdi, da bi znalo delat. Moram probat.

Hvala in lp

Mitja Bonča ::

tomaz ti je že nakaz kako je potrebno v tem primeru, če hočeš da ti koda sama poišče vse določene kontrole in naponlni, v tvojem primeru rač z nekimi naključnimi števili. Na formo sem samo za primer dodal gumb1, s kateri kot vidiš sprožim polnjenje textBoxov.
Evo to je koda, upam da si sedaj zadovoljen:
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 Nov6Test
{
    public partial class Form1 : Form
    {
        Random myRandom = new Random();

        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            PolnenjeTextBoxov();
        }

        private void PolnenjeTextBoxov()
        {
            foreach (Control kontrola in this.Controls)
            {
                if (kontrola.GetType() == typeof(TextBox))
                {
                    int intStevilo = DobiStevilo();
                    kontrola.Text = intStevilo.ToString();
                }
            }
        }

        private int DobiStevilo()
        {
            return myRandom.Next(100) + 1;
        }       
    }
}


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C#] pomoc pri vpisu elementov v listBox

Oddelek: Programiranje
101164 (1079) keworkian
»

vb.net: dynamic textbox

Oddelek: Programiranje
51087 (977) saule
»

c# class

Oddelek: Programiranje
342120 (1714) japol
»

C# okna in podokna

Oddelek: Programiranje
111546 (1140) FlashM
»

Kalkulator-problem

Oddelek: Programiranje
51231 (1164) Tutankhamun

Več podobnih tem