none
url in Webbrowser in einer 2 Form RRS feed

  • Frage

  • Hallo

    Ich habe 2 Formen, Form 1 enthält ein Button was die Form2 mit ein Webbrowsercontrol beinhaltet aufruft.

    form2^ browser = gcnew form2();
    browser->webBrowser1->Navigate("http://www.domain.de");
    browser->ShowDialog();

    Nun erhalte ich eine Fehlermeldung nach den Sicherheitsrichtlinie hat Browser keinen Zugriff auf webBrowser1.
    Wie kann ich nun das dazu bewegen das der Auruf funktioniert und wo habe ich einen Fehler?

    Viele dank für Eure Hilfe.
    Donnerstag, 4. März 2010 23:42

Antworten

  • Hallo Vijeansoft!

    > public string SetURL(string report)
    > {
    > webBrowser1.Navigate(report);
    > return report;
    > }
    > Meinst du dieser Art?

    Genau!

    > Nachtrag: Fehler 23 error C2248: "test::Form2::webBrowser1": Kein
    > Zugriff auf private Member, dessen Deklaration in der test::Form2-Klasse
    > erfolgte. c:\users\vijean soft\documents\visual studio
    > 2008\projects\c++\test\test\Form1.h 88 test

    Du musst diese Methode (SetURL) in den Klasse machen, wo auch das
    "webBrowser1" deklariert wird!!!
    Also so:


    public void SetURL(String^ url)
    {
    this->webBrowser1->Navigate(url);
    }



    Und ändere died nach:
    > private: System::Void button1_Click(System::Object^ sender,
    > System::EventArgs^ e) {
    > Form2^ browser = gcnew Form2();
    > browser->webBrowser1->Navigate("http://www.google.de");
    > browser->ShowDialog();
    > }


    browser->SetURL("http://www.google.de");



    Jochen Kalmbach (MVP VC++)
    Freitag, 5. März 2010 12:43

Alle Antworten

  • Hallo Vijeansoft!

    > form2^ browser = gcnew form2();
    > browser->webBrowser1->Navigate("http://www.domain.de");
    > browser->ShowDialog();
    >
    > Nun erhalte ich eine Fehlermeldung nach den Sicherheitsrichtlinie hat
    > Browser keinen Zugriff auf webBrowser1.

    Du kannst nicht auf private Member von form2 zugreifen. Und
    "webBrowser1" ist private.

    Du hast zwei Möglichkeiten:

    1. Du kannst das Field "webBrowser1" von "private:" auf "public:"
    ändern; das ist aber designtechnisch sehr unschön

    besser ist:
    2. Mache in form2 ein "public:" string-Property, welches dann das
    "Navigate" aufruft.



    Jochen Kalmbach (MVP VC++)
    Freitag, 5. März 2010 06:26
  • Ich habe mal in C# so etwas geschrieben:

    public string SetURL(string report)
            {
                webBrowser1.Navigate(report);
                return report;
            }
            private void dialogbrowser_Load(object sender, EventArgs e)
            {
            }
    Meinst du dieser Art?

    Nachtrag: Fehler    23    error C2248: "test::Form2::webBrowser1": Kein Zugriff auf private Member, dessen Deklaration in der test::Form2-Klasse erfolgte.    c:\users\vijean soft\documents\visual studio 2008\projects\c++\test\test\Form1.h    88    test

    Buttonklick Form1

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                     Form2^ browser = gcnew Form2();
                     browser->webBrowser1->Navigate("http://www.google.de");
                     browser->ShowDialog();
                 }

    public String in Form2

            }
            public string SetURL(string report)
            {
                webBrowser1.Navigate(report);
                return report;
            }
            private void Form2_Load(object sender, EventArgs e)
            {
            }

    Wo steckt der Fehler?
    Freitag, 5. März 2010 10:54
  • Hallo Vijeansoft!

    > public string SetURL(string report)
    > {
    > webBrowser1.Navigate(report);
    > return report;
    > }
    > Meinst du dieser Art?

    Genau!

    > Nachtrag: Fehler 23 error C2248: "test::Form2::webBrowser1": Kein
    > Zugriff auf private Member, dessen Deklaration in der test::Form2-Klasse
    > erfolgte. c:\users\vijean soft\documents\visual studio
    > 2008\projects\c++\test\test\Form1.h 88 test

    Du musst diese Methode (SetURL) in den Klasse machen, wo auch das
    "webBrowser1" deklariert wird!!!
    Also so:


    public void SetURL(String^ url)
    {
    this->webBrowser1->Navigate(url);
    }



    Und ändere died nach:
    > private: System::Void button1_Click(System::Object^ sender,
    > System::EventArgs^ e) {
    > Form2^ browser = gcnew Form2();
    > browser->webBrowser1->Navigate("http://www.google.de");
    > browser->ShowDialog();
    > }


    browser->SetURL("http://www.google.de");



    Jochen Kalmbach (MVP VC++)
    Freitag, 5. März 2010 12:43