» »

C#, TextBox in PopUp forma

C#, TextBox in PopUp forma

MarCar ::

Rabim eno pomoč in nasvet.
Kako bi lahko naredil ... imam Formo, na tej Formi imam textbox, ko bi kliknil na textbox bi se mi odprla forma kot popup, recimo numericna tipkovnica na kateri bi lahko vtipkal tipke.
Tako formo v obliki numericne tipkovnice sem si naredil.


Sedaj pa ne vem poklicati iz textbox-a te forme, aja, cilje je da bi, ko bi vtipkal stevilke iz popup forme, da bi se zapisale v izbrani textbox, v mojem primeri v tega iz katerega bi prical mojo numericno tipkovnico.

Hvala za nasvete ze v naprej.

keworkian ::

Narediš novo formo in daš event na (onclick al neki) in in v tem kličes form new form in DELUJE!

pzagor2 ::

Če želiš znak v textbox prenesti takoj ko klikneš na gumb v tvoj popupu. Lahko narediš takole...
Na textbox dodaš dogodek Click v tem dogodku pokličeš novo formo (tvoj popup). Kot argument pa podaš textbox
        private void textBox1_Click(object sender, EventArgs e)
        {
            Form2 dialogBox = new Form2(textBox1); //Form2 je tvoja popup forma.
            dialogBox.ShowDialog(); // oziroma .Show()
            
        }

V Form2 (tvoj popup) pa potem narediš nov konstruktor...
        private TextBox textBox1;
        public Form2(TextBox textBox1)
        {
            InitializeComponent();
            this.textBox1 = textBox1;

        }

Ob kliku na gumb v tvoji numerični tipkovnici pa potem samo dodaš text v textbox.
        private void button2_Click(object sender, EventArgs e)
        {

            textBox1.Text = textBox1.Text + "2";
        }

Mitja Bonča ::

A ti bi rad narisaš celotno tipkovnico? To boš moraš za vsako tipko posebej dati gumb in jo sprogramirati - saj ni nič posebnega, samo ni malo tipk :)

Mitja Bonča ::

Evo nekaj takega si lahko omisliš:


//form1 (glavna forma):
 public partial class Form1 : Form
    {
        Form2 f2;
        public Form1()
        {
            InitializeComponent();
            this.textBox1.Click += new EventHandler(textBox1_Click);
        }

        private void textBox1_Click(object sender, EventArgs e)
        {
            if (f2 == null)
                f2 = new Form2(this);
            f2.Show();
        }

        public void VnosBesedTipkovnice(string tipka)
        {
            if (tipka == "BackSpace")
                textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1);
            else
                textBox1.Text += tipka;
        }
    }

//form2 (keyBoard forma):
public partial class Form2 : Form
    {
        Form1 f1;
        public Form2(Form1 _f1)
        {
            InitializeComponent();
            f1 = _f1;

            //za vse buttne se naredi skupen dogodek:
            foreach (Control c in this.Controls)
                if (c is Button)
                    c.Click += new EventHandler(buttons_Click);
        }

        private void buttons_Click(object sender, EventArgs e)
        {
            Button tipka = sender as Button;
            if (tipka.Text != "Zapri")
                f1.VnosBesedTipkovnice(tipka.Text.ToString());
            else
                this.Close();
        }
    } 


Predlagam ti da daš v designerju od forme vse tipke gor na njo, jih razporediš kot je treba, potem pa da ne boš imel 100 dogodkov od vsake tipke, uporabiš moj primer, kjer za vse tipke določiš dogodek (button_Click), razen za button_Zapri.
Malce se poigraj, sploh če hočeš imeti vse tipke delujšče, v kombinciji z ctrl ali shift. Bi pa naj bilo nekaj takega. Lahko si omisliš tudi kak switch metodo, če hočeš resnično imeti celotno tipkovnico pokrito. Ampak pomoje ti rabiš samo glavne tipke, za shift pa itak imaš tipko (Caps lock), ki ti pove da morajo biti tipke velike (za to uporabiš metodo ToUpper(), obratno za male črke ToLower()).

Upam da bo malce pomagalo pri projektu.

Mitja Bonča ::

Samo še dodam kodo (oz. kar celotno kodo za tipkovnico), ki uporablja Caps Lock (velike, male črke):

//form2 (tipkovnica):
 public partial class Form2 : Form
    {
        Form1 f1;
        bool bVelikeCrke;

        public Form2(Form1 _f1)
        {
            InitializeComponent();
            f1 = _f1;

            //za vse buttne se naredi skupen dogodek:
            foreach (Control c in this.Controls)
                if (c is Button)
                    c.Click += new EventHandler(buttons_Click);
        }

        private void buttons_Click(object sender, EventArgs e)
        {
            Button tipka = sender as Button;
            if (tipka.Text == "Zapri")
                this.Close();
            else if (tipka.Text == "Caps")
            {
                if (!bVelikeCrke)
                {
                    bVelikeCrke = true;
                    tipka.BackColor = Color.Yellow;
                }
                else
                {
                    bVelikeCrke = false;
                    tipka.BackColor = SystemColors.Control;
                }
            }
            else
            {
                string crka = tipka.Text.ToString();
                if (crka != "BackSpace")
                    crka = bVelikeCrke ? crka.ToUpper().ToString() : crka.ToLower().ToString();
                f1.VnosBesedTipkovnice(crka);
            }
        }
    }

Moja tehnika temelji na prepoznavanju črk z lastnostjo (ang. Property) Text. V Text lastnost pač vneseš določeno črko tipke, in ta se potem gleda kaj se bo preneslo v form1.
Za Caps Lock sem pač napisal "Caps" v lastnost "Text" in ko koda prepozna to besedo, se črke nastavijo na velike in še barva "CapsLock tipke" se spremeni, tako da veš da imaš vključene velike tipke. To to isto tipko klikneš drugič, se velikost črk spremeni v male. Obenem se spremeni tudi barva tipke v normalno.
Upam da sem ti prikazal kako naj bi se to delalo.
PS: če ti lastnost "Text" ni po godu, lahko uporabiš lastnost "Tag", ki je prav tako cool. Je pa malce več dela. Ampak pomojem ti Text zadostuje.

Adijo,

MarCar ::

Pozdravljeni.

Hvala za adogovore.

Sem na koncu uspesno naredil.


Vredno ogleda ...

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

[C#] Spreminjanje fahrenheitov v celzije

Oddelek: Programiranje
51282 (1137) blackwing
»

C# textbox polnjenje

Oddelek: Programiranje
71513 (1378) Mitja Bonča
»

C# iz form2 v form1,textboxi

Oddelek: Programiranje
131852 (1478) Keki
»

C# Pomoč

Oddelek: Programiranje
131310 (1135) jizzer
»

c# class

Oddelek: Programiranje
342151 (1745) japol

Več podobnih tem