Tema: Re: .NET Default button dilemele
Autorius: Jornada Del Muerto
Data: 2010-05-25 20:03:29
    Na uztenka ne fokusa kas turi ziuret bet ActiveControl, ten bus tas controlas kuris turi fokusa UserControl properciuose, taciau apsiejau galutiniam variante ir be jo, dabar daugmaz toks kodas:

    (tiesa mano atveju AcceptButton kviecia kazkokia DB paieska, tai kol ji processinasi as dar vis matau dropdown, bet poto jis dingsta nieko daugiau nespaudziant, to per akis).

  protected override bool ProcessCmdKey (ref Message msg, Keys keyData)
  {

   if (keyData == Keys.Enter &&
    _AcceptButton != null)
   {
    // Jeigu vyko enteris pirmiau enter komanda atiduodam user controlui
    // Tada jei tai buvo kazkokio combobox dropdown ar textbox autocomplete list dropdown atidarytas
    // Jis bus apdirbtas paprastai, ta prasme taip kaip apdirbamas paspaudus enteri jei ner jokio AcceptButton
    bool retVal =  base.ProcessCmdKey (
     ref msg, keyData);

    // O va tada jei yra accept buttonas clickiname ji programiskai
    _AcceptButton.PerformClick ();

    // ir viskas ;)
    return retVal;
   }
   else if (keyData == Keys.Escape &&
    _CancelButton != null)
   {
    _CancelButton.PerformClick ();
    return true;
   }

   return base.ProcessCmdKey (
    ref msg, keyData);
  }



"zZz" <zZz@zirzilia.lt> wrote in message news:htgnbs$i78$1@trimpas.omnitel.net...
> Tai ir pasižiūri, ar neturi focus'o kuris nors iš tavo controlų ir ar 
> nevaliduotas. Jei nevaliduotas - validatini, kitu atveju kvieti Accept.
> 
> "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
>>> 
>