ComboBox, pobranie współrzędnych (px) wybranego elementu

0

Hej!
Czy ktoś wie jak pobrać współrzędne rozwiniętego elementu w Combobox (WinForms)?
Dokładniej... użytkownik wpisuje jakieś dane, mój prosty algorytm wyszukuje zadane dane w Combobox a następne rozwija 1 napotkany element spełniający warunek (podświetla go). Teraz chce pobrać współrzędne wybranego, znalezionego elementu, aby tam przesunąć kursor...

// tutaj znaleziono już odpowiedni element
this.comboBoxRoboty.SelectedIndex = i; // aktywujemy go
this.comboBoxRoboty.Focus(); // ustawiamy aktywny focus na komponencie
this.comboBoxRoboty.DroppedDown = true; // rozwijamy
Cursor.Current = Cursors.Default;   // czasem kursor znika, dlatego na sztywno wymuszamy powrót kursora
 

Chciałem zrobić takie ułatwienie dla użytkownika, bo czasem tych elementów w ComboBox jest dużo (aplikacja ogólnie trochę specyficzna ale to też takie wymogi i dość nietypowa branża).

0

Strasznie przekombinowane ja bym się wkurzał jak by mi program majdał kursorem. Bardziej "user frendly" według mnie będzie wyświetlenie danych w ComboBoxie które pasują i ukrycie wszystkich pozostałych, do tego żeby szybciej przełączyć się na kolejne elementy na przykład z TextBoxa w którym użytkownik wpisuje dane do ComboBoxa poustawiał bym TabIndex żeby nie było trzeba tyle klikać.

0

Hmmm może faktycznie, przekombinowane. Już miałem Spy++ obserwować jakie zdarzenie odpowiada za wyświetlanie elementów combobox i jakieś wstawki z WindowsAPI robić.
Może lepiej będzie np. w combobox pogrubić wybrane elementy? O ile tak się da, że pojedyncze pogrubić, albo resztę nie pasujących ukryć (combobox jest wypełniany z bazy danych Oracle, za pomocą mechanizmu ODBC).

1
LOSMARCELOS napisał(a):

Hmmm może faktycznie, przekombinowane. Już miałem Spy++ obserwować jakie zdarzenie odpowiada za wyświetlanie elementów combobox i jakieś wstawki z WindowsAPI robić.

Ambitny plan. :)

LOSMARCELOS napisał(a):

Może lepiej będzie np. w combobox pogrubić wybrane elementy? O ile tak się da, że pojedyncze pogrubić, albo resztę nie pasujących ukryć (combobox jest wypełniany z bazy danych Oracle, za pomocą mechanizmu ODBC).

Możesz użyć ComboBox.DrawItem Event przykładów na necie pełno pierwszy lepszy z msdn'a: https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.drawitem(v=vs.110).aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1