Tema: Re: .NET Default button dilemele
Autorius: Jornada Del Muerto
Data: 2010-05-25 16:35:42
    Cia paprastas .net textboxas (.net 2005, 2.00 framework), tik as esu ji nusiveldejas, kaip ir daugeli kitu .net controlu ir prapletes galimybes pagal savus poreikius, pvz pas mane dauguma controlu (textbox, combo, listbox, listview, datagridview) palaiko man reikalingus metodus:

    void Load (DataTable);
    void Load(List<string>);

Kuriais as pakraunu reikalinga duomenu sarasa i juos, tiesa texbox atveju dar datatable column index nurodomas kada dirbama su datatable, o atrodo daugmaz taip:

  public void Load (DataTable table, int column)
  {
    // turiu ir nuosava DataTable ir DataRow su praplestom galimybem, bet viskas veldeta nuo standartiniu System.Data.* DataTable ir DataRow
   Load (AlphaDataTable.GetTableColumnAsArray (table, column)); 
  }

// sios klases bazine klase: base == System.Windows.Forms.TextBox
  public void Load (IEnumerable<string> data)
  {
   AutoCompleteSource = AutoCompleteSource.CustomSource;
   AutoCompleteMode = AutoCompleteMode.Suggest;

   AutoCompleteStringCollection collection = new AutoCompleteStringCollection ();

   foreach (string s in data)
   {
    collection.Add (s);
   }
   AutoCompleteCustomSource = collection;
  }

    Zmones daznai neziuri ka gali standartiniai controlai ir gali pasirodyt, kad kazko neturi ka jie realiai turi bet vat valdytta autocomplete dropdown yra beda... dabar patikrinau tai ne taip ir tragiskai su tuo enteriu dropdownuos, praeina eventas 2 kart paspaudus entery tiesiog ir rodos viskas ok...



"lomzig@work" <kp@work.gg> wrote in message news:htgj2j$bqp$1@trimpas.omnitel.net...
> tai visų pirma kogero čia nevisai standartinis textbox'as ? nes standartinio 
> definitione nieko nėr apie autocomplete...
> o jei jau turi nestandartinį tai turi vadinasi ir eventus kurie handlina 
> keyup/down
> tai vat tiesiog padaryk kad jei selected text<>text (nu mol useris įvedė 
> dalį norimo teksto) ir keycode==enter, e.handled =true, kur e - keypress 
> eventas regis, kiek pamenu po tokio dalyko aukštesniem controlsam eventas 
> nebebus paduotas...
> vėlgi jei čia pas tave asp.net ir ajaxai tai tada gali ir nesuveikt...
> 
> "Jornada Del Muerto" <ask@me.email> wrote in message 
> news:htgi9f$af6$1@trimpas.omnitel.net...
>>    Dariau kaip kitoje sakoje priespaskutiniam siuo metu mano reply, mano 
>> user control tai beveik visa forma su dafiga controlu, sarasu, mygtuku, 
>> texboxu, comboboxu, kartais ir listboxu ir t.t... zodziu yra formoje tab 
>> control o tabuose user controlai kad nesilietu i viena vieta visi 
>> funkcionalumai, tai tiek del to, o cia matau funkcija konkreciam controlui 
>> skirta, raso kad on focus.
>>
>>    Tai man kaip ir veikia, mano metodu, bet veikia "per gerai" enter 
>> visada aktyvuoja AcceptButton'a net jei tuo metu is combobox ar 
>> autocomplete textbox renkiesi kazka ir spaudi enter, dropdown'as visas 
>> palieka buti :(
>>
>>    Tai teko analizuot ActiveControl property ir implementint saviem 
>> textboxam ir comboboxam interfeisa kuris pranesinetu apie tai ar atlikta 
>> duomenu validacija ar ne, paprastas validated suveikia tik praradus 
>> textboxui fokusa tai teko kurt pseudo validavima, kad  jeigu vyksta 
>> OnChange - zymisi validated = false, o OnValidated ir OnKeyUp (kada 
>> paspaustas butent Enter) nusistato kad validacija atlikta, vat zinau kad 
>> cia ne idealiai dabar viskas ir bugovas walkaround'as idetas :( tai mastau 
>> kaip normaliai padaryt, nes jei ne enter spaus o pvz pele doubleclickins 
>> ir liks validated = false...
>>
>>    Esme ta kad textboxui jei ijungiama autocomplete, bent jau neradau kaip 
>> suzinoti kad atidarytas autocomplete dropdown, ner rodos jokio evento 
>> kuriuo kazkaip suzinot tai :(
>>
>>
>>
>> "zZz" <zZz@zirzilia.lt> wrote in message 
>> news:htfoc3$tp4$1@trimpas.omnitel.net...
>>> PreviewKeyDown?
>>>
>>> "Jornada Del Muerto" <ask@me.email> wrote in message
>>> news:htdqv5$17d$1@trimpas.omnitel.net...
>>>> Sveiki,
>>>>
>>>>    Situacija tokia, yra .net 2005 application, jame esminis elementas
>>>> TabControl, kuriame yra arti 10 tab'u, o kiekvienam tabe ideta po User
>>>> Control'a (Dock=Fill savo tabe) su ivairiais funkcionalumais.
>>>>
>>>>    User Controlas neturi kazko tokio kaip AcceptButton, kur galima butu
>>>> priskirti default button'a kuris suveikinetu paspaudus enter, vat 
>>>> klientai
>>>> uzsimane kad tai butu ir dabar suku galva kaip tai padaryt, yra kokiu
>>>> minciu ?
>>>>
>>>> JDM
>>>