5

Zajmuję się doradztwem w sprawie dużego projektu WinForm .Net, który musi być uruchamiany w trybie "Touch", aby można było go obsługiwać za pomocą interfejsu ekranu dotykowego. Architektura aplikacji zawiera już logikę skalowania w celu powiększenia czcionek/wyświetlaczy w standardowych formularzach i formach .Net, a niestandardowe formanty również obsługują skalowanie.Okna dialogowe Windows z dużymi czcionkami

Problem polega na tym, że aplikacja korzysta z OpenFileDialog i SaveFileDialog, które nie skalują się przy użyciu tej samej logiki (co zasadniczo dopasowuje rozmiar właściwości czcionki w formancie i rekursywnie). Uważam, że te okna dialogowe są zasadniczo rodzimymi oknami dialogowymi systemu Windows, a klasa OpenFileDialog to tak naprawdę tylko klasy opakowujące, które eksponują standardowy interfejs .Net do interakcji z nimi.

Jednym z rozwiązań może być implementacja niestandardowych okien dialogowych dla tych rzeczy, ale prawdopodobnie byłaby to praca dość obszerna. Naprawdę chcielibyśmy w jakiś sposób skalować rozmiar czcionki w tym konkretnym oknie dialogowym (być może poprzez magię obsługi okien P/Invoke)?

Wiem, że jednym z rozwiązań pozwalających na dotykanie byłoby ogólne dostosowanie rozmiaru czcionki systemu Windows, ale pomysł ten nie jest tak naprawdę związany z tą firmą, wolałby skalować samą aplikację i pozostawić resztę OS nietknięty.

Jakie są Twoje doświadczenia i pomysły dotyczące tego, w jaki sposób można skalować te okna dialogowe do większej czcionki? A może powinniśmy po prostu ugryźć bullet i stworzyć dla niego niestandardowe okna dialogowe?

+0

[Ten] (http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx) artykuł może ci pomóc. – ahazzah

+0

Artykuł jest dobry, ale nie chodzę w ten sposób. Raczej przepisałbym kod, niż hackować zamknięte klasy z .NET. Następna wersja zmian w strukturze lub interfejsie API może łatwo złamać twój kod. Korzystanie z kontroli innych firm może ci bardzo pomóc (płatne lub bezpłatne). Najpierw wybrałbym kontrolę drzewa, trudniejszą do dostosowania i wszystko inne. –

+0

[This] (http://www.codeproject.com/KB/dialog/CustomizeFileDialog.aspx) inny artykuł też może ci pomóc =) –

Odpowiedz

1

wiem, że jedno rozwiązanie dla dotykowy umożliwiający byłoby, aby dostosować rozmiar czcionki Windows w ogóle, ale ten pomysł nie jest bardzo zaraźliwy na z tej firmy, to oni się raczej skala aplikację i zostawić pozostała część systemu operacyjnego nietknięta.

Okna dialogowe, do których nawiązujesz, są częścią "reszty systemu operacyjnego", które wolą pozostawić nietknięte. Używasz typowych okien dialogowych, które są zmuszane do zwiększania skalowania czcionki w panelu sterowania, tj. Do całego systemu lub do samodzielnego ponownego wdrożenia tych okien dialogowych.

Alternatywą może być utworzenie osobnego pulpitu Windows za pomocą odpowiedniego interfejsu API, zwiększenie jego skalowania czcionek i uruchomienie aplikacji (tzn. Pozwolić aplikacji na tworzenie, używanie i niszczenie tego pulpitu). Następnie aplikacja i wszystkie popularne okna dialogowe zostaną przeskalowane. Aplikacja nigdy nie będzie widoczna w innych aplikacjach na jednym ekranie, a trzeba będzie zadbać o przełączanie pulpitów w aplikacji (chyba). Nie zobaczysz nic oprócz GUI aplikacji, gdy aplikacja jest aktywna. Bez przycisku startowego, bez paska zadań, bez nuttin'ów. Zobacz na przykład http://www.codeproject.com/KB/cs/csdesktopswitching.aspx, aby uzyskać szczegółowe informacje.

+1

Przyjmę to jako odpowiedź, ponieważ jest to jedyny realnie opublikowany (chociaż miałem nadzieję na coś innego niż "ponownie zaimplementowałem okna dialogowe" :)) –

-1

Najlepszym rozwiązaniem dla Ciebie byłoby stworzenie formularza implementującego nagłówek z etykietą iz zamkniętym dnem, a w pozostałej części umieścić to, czego potrzebujesz. W takim przypadku czcionka etykiet może zostać zwiększona do dowolnej wielkości. Jeśli chcesz wybrać to okno dialogowe, po prostu zadzwoń .sohwDialog() na formularzu:

Powiązane problemy