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?
[Ten] (http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx) artykuł może ci pomóc. – ahazzah
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. –
[This] (http://www.codeproject.com/KB/dialog/CustomizeFileDialog.aspx) inny artykuł też może ci pomóc =) –