Tak się dziś od rana miotałem, czy chwycić za Mono & monodevelop, czy też zacząć pisać aplikacje w VisualStudio .net 2003. Stanęło w końcu na tym drugim z jednego prostego powodu - RAD. Bo co jak co, ale wygodę tworzenia interfejsów cenię sobie niezmiernie, a Glade (UI dla gtk&mono) jakoś wciaż niespecjalnie mnie kręci. Wszystko szło zgodnie z planem, do czasu... gdy zachciało mi się wyświetlić plik html gdzieś na formie. Znaczy się wstawić kontrolkę odpowiedzialną za interpretację htmla i generację strony. Marzył mi się taki właśnie IE-Widget. Ale jak się okazuje, nie jest to wcale takie proste, jak się początkowo wydawało. Bo po pierwsze kontrolki IE próźno szukać na standardowym toolboxie. Zdziwiło mnie to trochę, no ale... dajmy na to, że sie przyzwyczaiłem i na google.com zaklikałem. Okazało się, że by zdobyć w/w komponent, trzeba kliknąć PPM na toolboxie -> Add/Remove Items -> Com Components -> Browse i wybieramy sobie shdocvw.dll z katalogu %windir%\system32\. Tym oto "prostym" sposobem stajemy się szczęśliwymi posiadaczami komponentu potrafiącego wyświetlać pliki htmlowe.
To jednak nie był koniec problemów. Szukałem metody, by wymusić na świeżo wstawionym komponencie pobranie danej strony. W celu oczywistym - zrobiłem własny "pasek adresu" i przycisk "idź". Dzięki CodeInsight szybko znalazłem to, czego szukałem - metodę Navigate, przedstawiającą się mniej/więcej tak:
C#:
-
axWebBrowser.Navigate(string uRL, ref object flags, ref object targetFrameName, ref object postData, ref object headers);
Jako, że średnio mi się to podobało, a przeciążona ta metoda nie jest, zacząłem szukać alternatywnej drogi, byla tylko uniknąć paskudnego i niepotrzebnego przekazywania obiektów (a właściwie referencji do tychże). Trafiłem w końcu na kod, sygnowany przez sam "wielki" MS:
C#:
-
object arg1 = 0; object arg2 = ""; object arg3 = ""; object arg4 = "";
-
axWebBrowser1.Navigate(addrBox.Text,ref arg1,ref arg2, ref arg3, ref arg4);
IMHO cudo! Ale reasumując:
- MS nie udostępnia żadnej łatwo dostępnej kontrolki na potrzeby ew. przeglądania plików html - dziwne!
- Zaproponowana metoda wywołania strony jest co najmniej... dziwna. I raczej brzydka. Ale cóż - MS :)