» »

[c#] izbris vsebin v vseh gradnikih

[c#] izbris vsebin v vseh gradnikih

japol ::

Kako najlažje izbrišem vsebino v vseh gradnikih, ne glede na to ali se nahajajo na panelih, groupboxih,...?

zenb ::

Mogoče ti bo to pomagalo: link. this je mišljen Form oz. tvoje trenutno okno v Winforms.

japol ::

Trenutno imam rešeno tako:
Imam Meni.sc in v njem kodo:
public void Novo(Form1 f1)
        {
foreach (Control c in f1.Controls) // le na formi
            {
                if (c is TextBox || c is ComboBox)
                {
                    c.Text = "";
                }
            }
foreach (Control c in f1.groupBox1.Controls) // le v groupboxu1
            {
                if (c is TextBox || c is ComboBox)
                {
                    c.Text = "";
                }
            }
foreach (Control c in f1.panel1.Controls) // le v panelu1
            {
                if (c is TextBox || c is ComboBox)
                {
                    c.Text = "";
                }
            }
// itd..............
}

ampak iščem način, da mi ne bo potrebno pisati za vsak panel, groupbox, itd.

zenb ::

private void button1_Click(object sender, EventArgs e)
{
  IEnumerable<Control> controlList = GetControls(this);

    foreach (Control c in controlList)
      c.Text = "";
}

public static IEnumerable<Control> GetControls(Control form)
{
     //Sprehodimo se skozi controle
     foreach (Control childControl in form.Controls)
     {   //Če ima controla otroke, potem se prehodimo še skozi otroke
         foreach (Control grandChild in GetControls(childControl))
         {
            yield return grandChild;
         }
           //vrnemo še kontrolo
           yield return childControl;
      }
}

EDIT: bolj šolski primer

private void button1_Click(object sender, EventArgs e)
        {
            List<Control> controlList = GetControls(this);

            foreach (Control c in controlList)
                c.Text = "";
        }

        public static List<Control> GetControls(Control form)
        {
            List<Control> controlList = new List<Control>();
            //Sprehodimo se skozi controle
            foreach (Control childControl in form.Controls)
            {   //Če ima controla otroke, potem se prehodimo še skozi otroke
                foreach (Control grandChild in GetControls(childControl))
                {
                    controlList.Add(grandChild);
                }
                //vrnemo še kontrolo
                controlList.Add(childControl);
            }

            return controlList;
        }


To bi moralo delovati:)

Zgodovina sprememb…

  • spremenil: zenb ()


Vredno ogleda ...

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

C#, TextBox in PopUp forma

Oddelek: Programiranje
61103 (997) MarCar
»

C# textbox polnjenje

Oddelek: Programiranje
71627 (1492) Mitja Bonča
»

C# Program

Oddelek: Programiranje
393097 (2020) Spura
»

razložitev nekaterij elementov v visual studio 05

Oddelek: Programiranje
72107 (1912) darkolord
»

[VB express edition] problem

Oddelek: Programiranje
71374 (1277) frudi

Več podobnih tem