Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# textboxeista ja formeista

Sivun loppuun

Javakoodari [29.04.2010 16:53:14]

#

Minulla on ohjelma, jossa on monta formia. Login formi, päävalikkoformi ja monta formia, joihin pääsee päävalikkoformin kautta. Kuitenkin kun yritän jotenkin saada login formin tekstikenttien tiedot käyttöön muissa formeissa, niin jostakin kumman syystä se ei tee sitä. Esim. jos yritän messagebox.show:lla katsoa osaako se hakea loginformin tekstikentistä tietoa jossakin muussa formissa, niin se näyttää vain tyhjää.

tsuriga [29.04.2010 19:54:22]

#

Tekstikenttien näkyvyysaluemääre on varmaankin private. Tee formille jokin getterimetodi, joka palauttaa tekstikentän sisällön.

groovyb [29.04.2010 22:14:02]

#

textbox on autogeneroitu Private TextBox TextBox1 (tai mikä nimi sitten onkaan) = new TextBox, eli privaattina.
muuta tämä public:ksi

voit muuttaa sitä formin autogeneroidusta tiedostosta mistä kaikkien Dragndrop controllit löytyy (eli controllien ja eventtien luonnit),ei siis esim Form1.cs vaan Form1.Designer.cs

jos muutat vaikka form2:sella sijaitsevan textbox2:sen public:si Form2.Designer.cs tiedostosta, voit käpistellä sitä Form1:sessä.

Form2 MyForm = new Form2();
MyForm.TextBox2.Text = "Jotain";

Javakoodari [29.04.2010 22:20:26]

#

Laitoin kaikki publiciksi, mutta eipä tuo näytä tekstiä näyttävän....

Metabolix [29.04.2010 22:31:39]

#

Jotenkin tuntuu, että olet tehnyt jonkin perustavanlaatuisen virheen, jota emme ehkä kyselemällä saa selville. Esimerkiksi groovyb:n koodista tuli mieleeni, että et kai vain vahingossa luo aina uutta formia siellä, missä yrität käyttää dataa? :)

Javakoodari [29.04.2010 22:36:31]

#

Se voi olla siitä kiinni. Miten saisi fiksusti tehtyä tuon systeemin? Jos olisi jossakin esimerkkikoodi, jossa on 2 formia ja edellisestä otetaan textboxin tiedot ja näytetään seuraavassa formissa tjsp. Ilmeisesti siis on väärin tehdä aina uusi formi ja käyttää tietoja siellä? Nyt se ei kyllä näytä mitään.

Tämä on siis loginformissa:

public void buttonLogin_Click(object sender, EventArgs e)
        {
           Valikko vali = new Valikko();
           vali.Show();
           //this.Hide();

        }

public void buttonCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
public string kirjautumistiedot()
       {
           return textBoxUsername.Text;
       }

Tota kirjautumistiedot funktiota oon koittanut käyttää valikko formissa, mutta se ei palauta mitään. Pelkkää tyhjää.

Mod. lisäsi kooditagit

Metabolix [30.04.2010 00:17:27]

#

Pystyisitkö antamaan tiedot eteenpäin funktiossa buttonLogin_Click?

Valikko vali = new Valikko(textBoxUsername.Text);
// Tai:
vali.asetaTiedot(textBoxUsername.Text);

groovyb [30.04.2010 08:38:24]

#

tässä esimerkki jos käytössä Form1 ja Form2

Form2.Designer.cs

//Täällä on autogeneroitu tavara kyseiselle formille

private TextBox TextBox1 = new TextBox(); //Tämä public:si
TextBox1.Size = new etc.etc.etc.

Form1.cs

namespace Esimerkki
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

     public static Form2 MyForm = new Form2(); //Luodaan Form2:sta olio
     bool Form2Created; //Form2:sen tilatieto

     private void Form1_Load(object sender, EventArgs e) //Form1_Load event
     {
            Form2Created = false
            MyForm.FormClosed += new FormClosedEventHandler(Form2_Closed); //luodaan eventti jotta saadaan selville milloin Form2 on suljettu
     }

     private void button1_Click(object sender, EventArgs e) //Napin Button1_Click event
     {
            if(!Form2Created)
            {
                 MyForm.Show(); /form2 näkyviin
                 Form2Created = true;
            }
     }

     private void button2_Click(object sender, EventArgs e) //Napin Button2_Click event
     {
            AssignText(textbox1.text); //eli siirretään Form1:sen textbox1:sen teksti Form2:sen textbox1.textiin
     }

     private void AssignText(string text)  //Tekstiä form2:sen textboxiin
     {
             MyForm.TextBox1.Text = text;
     }

     private void Form2_Closed(object sender, FormClosedEventArgs e) //Jos suljetaan niin asetetaan tilatieto false:ksi
     {
             Form2Created = false;
     }

}

Tämä kuuluu sarjaan testaamattomat notepad viritykset, mutta eiköhän tuo idea selviä kuitenkin ;)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta