Vyvolání události u DateTimePicker   zodpovězená otázka

VB.NET, Komponenty, WinForms

Chtěl bych se poradit jak programově vyvolat událost otevření/zobrazení kalendáře u DateTimePickeru.

Předem díky za radu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pomocí Windows API nebo zdědit tento ovládací prvek a připsat požadovanou funkčnost...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za pomoc, nicméně problém stále přetrvává (zkouším připsat požadovanou fci) a to buď:

- nemohu nalézt způsob jak zachytit událost kliknutí na control pro otevření MonthCalendar

- takto to nejde

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vy si to totiž představujete příliš jednoduše. Vytvořit takovouto funkčnost by vyžadovalo provést Subclassing a napsat metodu, která by nějakým způsobem doručila zprávu pro rozbalení seznamu (Windows Message) do ovládacího prvku, bez Windows API se tedy stejně neobejdete...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

:-) díky za info.

Hodilo by se mi toto řešení a zároveň mě to zajímalo jak na to. Podle toho jak píšete budu spíš hledat zcela jiné řešení.

Podařilo se mi využít pomocí dědění Protected Methods controlu, nicméně taková, která by toto uměla tam není.

Mnohokrát děkuji za info.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nyní jsem také řešil jak např. otevřít Calendar pomocí klávesnice (někdo vyžaduje ovládání co nejvíce pomocí klávesnice) a nalezl jsem toto funkční a jednoduché řešení.

Třeba je to něco podobného co jste hledal.

 private void button1_Click(object sender, EventArgs e) { 
      int x = dateTimePicker1.Width - 5; 
      int y = dateTimePicker1.Height / 2; 
      IntPtr pos = (IntPtr)((y << 16) + x); 
      SendMessage(dateTimePicker1.Handle, 0x201, IntPtr.Zero, pos); 
      SendMessage(dateTimePicker1.Handle, 0x202, IntPtr.Zero, pos); 
    } 

    [System.Runtime.InteropServices.DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback