Zajmuję się tworzeniem strony internetowej oraz aplikacji Windows i zamierzam używać tej samej strony internetowej dla aplikacji formularzy Windows oraz dla witryny sieci Web.
Więc chcę wywołać kontrolkę formularza Windows po kliknięciu w link, który jest umieszczony na stronie internetowej. I chcę pokazać kontrolkę formularza systemu Windows jako wyskakujący formularz.
Jak to zrobić? Lub podaj jakiś dokument związany z tym problemem.
3 odpowiedzi
Zakładając, że masz na myśli, że w aplikacji WinForms hostujesz wystąpienie WebBrowser
, możesz dostarczyć obiekt do jego właściwość ObjectForScripting
. który udostępnia metodę do wywołania w celu wyzwolenia kodu WinForms. Na przykład:
public partial class MyWindowsFormsForm()
{
public MyWindowsFormsForm()
{
this.WebBrowserControl.ObjectForScripting = this;
}
public void DoSomething()
{
MyOtherForm f = new MyOtherForm();
f.Show();
}
}
Następnie na twojej stronie:
<script language="javascript" type="text/javascript">
function loadOtherForm()
{
if (RunningInWinFormsApplication())
{
window.external.DoSomething();
}
else
{
// Code to do something when NOT running inside the WinForms app could go here
}
}
function RunningInWinFormsApplication()
{
return (window.external.DoSomething != undefined);
}
</script>
<button onclick="loadOtherForm();">Call into WinForms app</button>
Istnieje oczywiste zastrzeżenie, że musisz mieć kod na swojej stronie internetowej, który sprawdza, czy window.external.DoSomething
rzeczywiście tam jest, więc prawdopodobnie onclick
(w tym przykładzie) wywołałby metodę pomocniczą, która albo wywołuje WinForms lub robi wszystko, co trzeba w przypadku, gdy strona nie jest hostowana w aplikacji.
Myślę, że się mylisz - albo my jesteśmy.
"Mam stronę, którą zaprojektowałem dla aplikacji webowej i zamierzam otworzyć tę samą stronę w kontrolce przeglądarki internetowej, która zostanie umieszczona na jednej z form aplikacji Windows Form. A jeśli otworzę formularz, który ma moja strona internetowa i kliknąłem link ze strony internetowej, wtedy powinien otworzyć inny formularz z aplikacji Windows"
Więc znasz link, który zostanie kliknięty? Następnie w Metodzie nawigacji w przeglądarce internetowej sprawdź, czy jest to link, którego oczekiwałeś i otwórz WinForm, np.:
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Tostring() == "http://localhost/LinkThatOpensFormTwo.htm")
{
Form2 f = new Form2();
f.Show();
Możesz wyświetlić formularz systemu Windows w przeglądarce internetowej (preferowany Internet Explorer) za pomocą aplikacji przeglądarki WPF, która ma funkcję osadzania formularzy systemu Windows (lub podobnych, takich jak składniki .NET).
To jest prawidłowe pytanie, ponieważ istnieje wiele starszych aplikacji .NET, których firma nie ma zasobów do opracowania w formacie Web HTML 5 (przy użyciu AJAX itp.). Takie starsze aplikacje można łatwo wyświetlić w przeglądarce internetowej przy niewielkiej wymaganej wstępnej konfiguracji.
- Otwórz aplikację Windows Form w istniejącym środowisku IDE programu Visual Studio
- Przejdź do właściwości projektu i w ustawieniach aplikacji Ustaw typ danych wyjściowych na „Bibliotekę klas”
- Dodaj nowy projekt typu „Aplikacja przeglądarki WPF”, jak pokazano poniżej
- Odwołaj się do formularza Windows (teraz jako DLL) wraz z dwoma ważnymi zestawami WindowsFormIntegration i System.Windows.Forms
- Napisz kod, aby wywołać formularz systemu Windows na stronie XAML i XAML.CS, jak pokazano w tym linku do samouczka.
- Przebuduj rozwiązanie i kliknij Opublikuj i zapisz, wybierz system plików, jak pokazano poniżej.
- Przejdź do folderu publikowania i kliknij dwukrotnie plik z rozszerzeniem '.xbap. Powinien zostać automatycznie otwarty w Internet Explorerze z pytaniem o uprawnienia po raz pierwszy.
- Powinieneś być w stanie wyświetlić dane wyjściowe w przeglądarce internetowej.
Daj mi znać, jeśli chcesz, abym utworzył samouczek wideo, aby osiągnąć to samo.
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.