Хобрук: Ваш путь к мастерству в программировании

Две кнопки WPF XAML, которые меняют URL-адрес веб-браузера в другом окне

Кажется, я не могу заставить свои две кнопки в Window2 успешно изменить URL-адрес веб-браузера в моем главном окне. Все, что я хочу сделать, это нажать кнопку один и перейти по одному адресу, а затем нажать другую кнопку и перейти по другому адресу. Я безуспешно пытался выполнить привязку и пытался настроить веб-браузер MainWindow на новый Uri, но это тоже не сработало. Я получаю сообщение об ошибке: «NullReferenceException не обработано» «Ссылка на объект не указывает на экземпляр объекта».

Не уверен, что я делаю неправильно, любая помощь будет оценена.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Timers;
using System.Threading;



namespace _2CAMS
{
/// <summary>
/// Interaction logic for Window2.xaml
/// </summary>
/// 

public partial class Window2 : Window
{
    MainWindow mw;

    public Window2()
    {
        InitializeComponent();

    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.ShowActivated = true;
        this.MouseLeftButtonDown += delegate { this.DragMove(); };
    }

    private void Button1_Checked(object sender, RoutedEventArgs e)
    {

    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
        Application.Current.Shutdown();
    }

    private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        //this.DragMove();
    }

    private void Image1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        System.Diagnostics.Process.Start("http://www.website.com");

    }

    private void button3_Click(object sender, RoutedEventArgs e)
    {
        Application.Current.MainWindow.WindowState = System.Windows.WindowState.Minimized;

        //App.Current.MainWindow.Hide();
        Window3 win3 = new Window3();
        win3.Show();
        this.WindowState = System.Windows.WindowState.Minimized;
    }

    private void button4_Click(object sender, RoutedEventArgs e)
    {
        mw.webBrowser1.Navigate(new Uri("http://www.address1.com"));

    }

    private void button5_Click(object sender, RoutedEventArgs e)
    {

        mw.webBrowser1.Navigate(new Uri("http://www.address2.com"));
    }

}
}

  • Этот код дает вам NRE? Какая переменная равна нулю? 10.02.2015
  • Не уверен, я ничего не увидел, просматривая «Подробности...». Или, может быть, я просто не знаю, что ищу. 10.02.2015
  • моментальный снимок 10.02.2015
  • Вам нужно навести курсор на каждый элемент и определить, что равно null. 10.02.2015
  • Как вы получаете доступ к главному окну в Window2? Опубликуйте больше кода. 10.02.2015
  • Я добавил остальную часть моего кода Window2 cs. 11.02.2015

Ответы:


1
((MainWindow)App.Current.MainWindow).webBrowser1.Navigate(new Uri("http://address1.com"));

Это работает или выдает InvalidCastException?

09.02.2015
  • Это сработало, однако, когда я последовательно нажимаю кнопку 4, она загружает соответствующую страницу, затем, когда я нажимаю кнопку 5, она загружает соответствующую страницу, но с ошибкой. Однако странно то, что когда я обращаю последовательность и начинаю сначала с кнопки 5, затем с кнопки 4, а затем чередую столько раз, сколько захочу, ошибка не возникает. Я в замешательстве. 11.02.2015
  • Вот что я получаю с ошибкой. Это в моем коде MainWindow.cs. 11.02.2015
  • После небольшого исследования я до сих пор не уверен, почему я получаю эту ошибку, однако мне удалось просто разместить два отдельных веб-браузера в моем MainWindow и сделать так, чтобы кнопки 4 и 5 чередовались, какой веб-браузер отображается/скрывается. Кажется, это работает без ошибок. Спасибо за всю помощь, ребята. 11.02.2015
  • Разве это не потому, что вы пытаетесь прокрутить до недопустимой позиции? В любом случае, это другой вопрос. Лучше задайте новый вопрос на stackoverflow, у вас будет больше шансов получить ответ 12.02.2015
  • Ну, технически это не недопустимая позиция, потому что я могу переключать исходные адреса, и это работает так же. и окно веб-браузера имеет тот же размер, положение и положение прокрутки. Бьет меня. (Пожимая плечами) 12.02.2015
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..