как открыть окна формы управления на веб-странице? - PullRequest
1 голос
/ 06 февраля 2012

Я занимаюсь разработкой веб-сайта, а также приложения для Windows, и собираюсь использовать одну и ту же веб-страницу как для приложения Windows, так и для веб-сайта.

, поэтому я хочу вызвать элемент управления формы Windows после нажатия на ссылку, размещенную на веб-странице.И я хочу показать элемент управления формы Windows как всплывающую форму.

Как это сделать?Или предоставьте какой-нибудь документ, связанный с этой проблемой.

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Предполагая, что вы имеете в виду, что в приложении WinForms вы размещаете экземпляр класса WebBrowser, вы можете предоставить объект его свойству ObjectForScripting.это обеспечивает метод для вызова вашего кода WinForms.Например:

public partial class MyWindowsFormsForm()
{
    public MyWindowsFormsForm()
    {
        this.WebBrowserControl.ObjectForScripting = this;
    }

    public void DoSomething()
    {
        MyOtherForm f = new MyOtherForm();
        f.Show();
    }
}

Затем на вашей странице:

<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>

Существует очевидное предостережение, что вам нужно иметь код на своей веб-странице, который проверяет, что window.external.DoSomething на самом деле существует, так что скорее всего ваш onclick (в этом примере) вызовет вспомогательный метод, который либо вызывает WinForms, либо выполняет любые необходимые действия в случае, если страница не размещается внутри вашего приложения.

0 голосов
/ 13 сентября 2018

Вы можете отобразить форму Windows в веб-браузере (Internet Explorer Preferred) с помощью приложения браузера WPF , в котором есть возможность встраивать формы Windows (или аналогичные компоненты .NET).

Это правильный вопрос, потому что существует множество устаревших приложений .NET, у которых нет ресурсов для разработки в формате Web HTML 5 (с использованием AJAX и т. Д.).Такие устаревшие приложения могут быть легко отображены в веб-браузере с минимальной начальной настройкой.

  1. Откройте приложение Windows Form в существующей среде IDE Visual Studio
  2. Перейдите в Свойства проекта и в настройках приложения Установите для параметра Тип вывода значение «Библиотека классов» enter image description here
  3. Добавьте новый проект типа «Приложение браузера WPF», как показано ниже enter image description here
  4. Ссылка на форму Windows (теперь как DLL) вместе с двумя важными сборкамииз WindowsFormIntegration и System.Windows.Forms
  5. Введите код для вызова формы Windows на странице XAML и XAML.CS, как показано в этой ссылке учебника .
  6. Перестройте решение и нажмите «Опубликовать и сохранить», выберите «Файловая система», как показано ниже.enter image description here
  7. Перейдите в папку «Публикация» и дважды щелкните файл с расширением «.xbap.Он должен автоматически открываться в Internet Explorer с разрешениями, запрашиваемыми в первый раз.
  8. Вы должны иметь возможность отображать вывод в веб-браузере.enter image description here

Дайте мне знать , если вы хотите, чтобы я создал видеоурок , чтобы добиться того же.

0 голосов
/ 07 февраля 2012

Я думаю, что вы запутались - или мы.

"У меня есть веб-страница, которую я разработал для веб-приложения, и я собираюсь открыть ту же веб-страницу в элементе управления веб-браузера, которая будет размещена на одной из форм приложения Windows.И если я открою форму, на которой есть страница моего веб-сайта, и нажму на ссылку с веб-страницы, то тогда она должна открыть другую форму из приложения Windows "

Так что вы знаетеСсылка, которая будет нажата?Затем в WebBrowser Navigating Method проверьте, является ли его ссылка ожидаемой, и откройте WinForm, например:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Tostring() == "http://localhost/LinkThatOpensFormTwo.htm")
{
Form2 f = new Form2();
f.Show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...