Tema: Re: formos elementų listas
Autorius: Jornada Del Muerto
Data: 2010-07-19 12:30:07
Jei labai reikia pereit visus controlus stai rekursyvi OOP metodika:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;


// Deklaruojam interfeisa kuris dirba su control
 public interface IControlAccessor
 {
      void Do (Control c);
 }

// Nusiveldime interfeisa ir sukuriame pvz Visible busenos verimo i atbula funkcionaluma
 public class VisibleInverter : IControlAccessor
 {
  #region IControlAccessor Members

  public void Do (Control c)
  {
   c.Visible = !c.Visible;
  }

  #endregion
 }

// Sukuriame rekursivine funkcija einancia per absoliuciai visus formos controlus ir sub sub controlus
// Tiesiog jei forma tures panele tai paneleje esantys controlai bus paneles.Controls propertyje
// Controls property priklauso Control tipui
 public class FormUtils
 {
  public static void AccessControls (
   Control control, 
   IControlAccessor accessor)
  {
   foreach (Control c in control.Controls)
   {
    accessor.Do (c);

    AccessControls (c, accessor);
   }
  }
 }

// Iskvieciame visu formos controlu apdirbima
 public partial class Form1 : Form
 {
  public Form1 ()
  {
   InitializeComponent ();

   FormUtils.AccessControls (this, new VisibleInverter ());
  }
 }



Tuo paciu jei reikia apdirbti kazkoki konkretu controla kazkaip ipatingai, galima tai daryti su "is" pvz


 public class OtherAccessor : IControlAccessor
 {
  #region IControlAccessor Members

  public void Do (Control c)
  {
   if(c is TextBox) {
        // Assigninimas castinant
        TextBox t = (TextBox)c;
        TextBox.Clear();
    }
    else if (c is ComboBox){
        // Accessinimas be assigninimo
        ((ComboBox)c).SelectedIndex = 0;
    }    

    // ir t.t...
  }

  #endregion
 }


P.S. Parasyta viskas per 5 min ;)
3Dastronomyagricultureaudioautosautos.audiautos.audioautos.binariesautos.bmwautos.clubautos.fordautos.hondacrxautos.japanautos.mercedesautos.opelautos.sportautos.volvoautos.vwaviaavia.binariesbankcardsbinariesbooksbuildingcinemacommercecomp.hardwarecomp.softwarecomp.lietuvinimascomp.networksculturedarbas.ieskaudarbas.siulaudesigneconomicselectronicsfaunafauna.aquafauna.binariesfishingflorafotofoto.binariesgamesgames.csgames.onlinegsmgurmanaihumourhumour.binariesinternetlawmicrosoftmotomusicmusic.binariesmusic.instrumentsmusic.LT.binariesnavigacijaphppoliticsprogrammingrpgsportstudyingsveikatatalktesttranslationtransportationtraveltravel.binariestvunixvideovideo.binarieswatersportswwwwww.flashpdaautos.supermama.ltmobiledarbasretro.3Dretro.agricultureretro.astronomyretro.audioretro.autosretro.autos.audiretro.autos.audioretro.autos.binariesretro.autos.bmwretro.autos.clubretro.autos.fordretro.autos.hondacrxretro.autos.japanretro.autos.mercedesretro.autos.opelretro.autos.sportretro.autos.supermamaretro.autos.supermama.ltretro.autos.volvoretro.autos.vwretro.aviaretro.avia.binariesretro.bankcardsretro.beosretro.binariesretro.booksretro.buildingretro.cinemaretro.commerceretro.compretro.comp.hardwareretro.comp.lietuvinimasretro.comp.networksretro.comp.softwareretro.cultureretro.darbasretro.darbas.ieskauretro.darbas.siulauretro.designretro.economicsretro.electronicsretro.e-vejasretro.faunaretro.fauna.aquaretro.fauna.binariesretro.fishingretro.floraretro.fotoretro.foto.binariesretro.gamesretro.games.csretro.games.onlineretro.games.rpgretro.genealogijaretro.gsmretro.gurmanairetro.humourretro.humour.binariesretro.internetretro.YZFretro.YZF.nebukretro.YZF.nebuk.netikintisretro.YZF.nebuk.netikintis.bukretro.YZF.nebuk.netikintis.buk.tikintisretro.lawretro.microsoftretro.mobileretro.motoretro.musicretro.music.binariesretro.music.instrumentsretro.music.LTretro.music.LT.binariesretro.navigacijaretro.newsretro.news.taisyklesretro.newuserretro.pdaretro.phpretro.politicsretro.programmingretro.rpgretro.sportretro.studyingretro.sveikataretro.talkretro.translationretro.transportationretro.travelretro.travel.binariesretro.tvretro.unixretro.videoretro.video.binariesretro.watersportsretro.wwwretro.www.flashdiylt.rkm.news.announcelt.rkm.news.newuser