2010-11-21 19 views
4

Oldukça farklı veriler gösterecek bir denetim ekleyeceğim bir windows form uygulaması yapıyorum. Çoğunlukla içerideki veriler gezinti düğmeleri ve yardım/eğitim metni olacaktır.C# WinForms: Bir web tarayıcısı denetimi kullanmalıyım

Ben HTML içeriğini yazmak ve sonra sadece uygulamada kontrolünde olduğunu göstermek eğer ideal olacağını düşünüyorum, ama bunun iyi bir fikir olup olmadığından emin değilim. Unutulmaması gereken

başka nokta var yakın gelecekte bir noktada aynı uygulamanın web tabanlı versiyonu olacak ve HTML başvurunun bu kısmını yapıyor çok kolay kullanırlılık yapacaktır olduğunu.

Bu önemliyse, kullanıcılar IIS yüklü olmayacaktır.

+0

Bu durumda, öğrenme eğrisine toleransınıza bağlı olarak WPF ile gidecektim. – BeemerGuy

+0

Kullanıcı, web tarayıcısı denetimi kendi barındırılan web sitenize bağlanacağı için IIS'nin zaten yüklü olması gerekmez. WebKit için –

cevap

2

Benzer bir uygulama var ve WebBrowser denetiminin çok iyi çalıştığını düşünüyorum. İhtiyacınız olan şey olduğunu düşünüyorsanız, bunun için yapardım ve benzer şeyler yapan başka uygulamalar da vardır. HTML sayfasındaki Javascript işlevlerini HtmlDocument.InvokeScript() kullanarak C# 'den ve window.external kullanarak Javascript'ten C#' yi arayabilir ve bu iki yönlü iletişim sayesinde hayatı kolaylaştırır. Eğer bir web sunucusu çalıştıran HTML kullanarak içeriği göstermiyorsunuz olarak

Kullanıcılar IIS yüklü gerekmez.

Ben giderdim IE dahili kontrolü yerine webkitdotnet daha dürüst olmak gerekirse. Her ne kadar WebKit, IE'ye üstün olsa da, webkitdotnet projesi sürüm 0,5'te C# <> JavaScript iletişimine veya DOM erişimine sahip değildir ve hala aktif olarak geliştirilip geliştirilmediğini söylemek zor görünmektedir. IE mükemmel olduğu kadar açık bir özellik paritesine sahip olduğunda mükemmel olacak, ancak yerleşik IE kontrolünün avantajı, uygulamanızın her kullanıcısı zaten kurulu olacak ve WebBrowser denetimi iyi test edilmiş olacaktır.

  • IE sürümleri 6 ila 9 arasında değişebilir, bu nedenle içerik (bir web sitesi gibi) tüm çalıştığından emin olmak için test etmek gerekir: Orada bulduğum bazı dezavantajları vardır.
  • göreli bağlantılar bir <base href="file://..."> birlikte çalışmadığını (en azından 8 kadar) IE bir hata var. Bu, yerel HTML belgelerinizdeki göreli bağlantıları kullanabilmenizi engelleyebilir.
  • Bazen, sayfalar WebBrowser denetiminin içinden farklı şekilde görüntülenir. Örneğin, http://bugs.jquery.com/ticket/7104 bir ve ben cufon'u etkileyen başka bir benzer hatayla karşılaşıyorum.
  • Uyumluluk nedenleriyle, kullanıcılarınız IE> 7'yi yükleseler bile WebBrowser denetimi, içeriğinizi varsayılan olarak IE7 görüntü oluşturma modunda hala devam ettirecektir. Bu, varsayılan olarak en standart modda işleyen bağımsız IE'ye göre farklıdır, bu yüzden beklemiyorsanız, sizi yakalayabilir. Bunu yapmak isterseniz, <meta http-equiv="X-UA-Compatible" etiketini ekleyerek değiştirebilirsiniz, ancak gerçekte test ettiğim farklı sürümlerin miktarını azalttığı için hayatı kolaylaştırır.
+0

WebKit'i yalnızca sürüm numarasına göre üretim için kullanılmaya hazır olarak reddetmeniz ilginç, ancak yerleşik IE kontrolü ile kafanızın en üstünde 4 sorun listeleyebilirsiniz. WebKit'te hangi sorunları yaşadınız? –

+0

Üzgünüz, ben ne demek istediğimi daha açık olarak düzenledim. Elbette haklısın, versiyon numarası kendisi gerçekten bir şey ifade etmiyor. – mikel

+0

@mike, bir yıl önce webbrowser denetimi html'inin .net'e geri iletişim kurması için bir yol gerektiğindeydim. Bu gelecekte çok yardımcı olacak, teşekkürler! –

6

Bu amaçla, katıştırılmış bir web tarayıcısının kesinlikle harika olacağını düşünüyorum. Uygulamaların birçoğu navigasyon, bilgi, eğitim vb. Için bir web tarayıcı kontrolü kullanmaktadır. Steam bir örnektir. Ayrıca, yeniden kullanılabilirlik neredeyse her zaman en iyi uygulamadır.

Ama bunun yerine IE yerleşik web tarayıcısı kontrolünün WebKit kullanacaktır.

+2

+1, Vana bile MSHTML/Trident'ten sıkıldı ve Steam'in en yeni sürümü ile birlikte WebKit'e geçti. – BoltClock

+0

Beni webkit tarayıcısından geri tutan tek şey, C# <-> js iletişim eksikliğidir. Ancak başka bir amaç için .. +1 –

İlgili konular