0

子フォームに Web ブラウザー コントロールがあり、表示された Web ページからデータを取得します。このデータをブラウザ フォームで使用して親フォームに渡す必要がありますが、既に開いているため、新しいインスタンスを開始する必要はありません。

親フォームは、ブラウザーからこのデータを受け取り、ページの解析から設定された変数でいくつかのテキスト ボックスを更新する必要があります。

私はこれを親フォームに持っています:

private void browserToolStripMenuItem_Click(object sender, EventArgs e)
    {
        System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(RunBrowser));
        t.SetApartmentState(ApartmentState.STA);
        t.Start(); 
    }

    public static void RunBrowser()
    {
        Application.Run(new BrowserForm());
    }

子フォームで多くのことを試しましたが、まったく機能しません。私が得ることができる最善の方法は、変数を親に渡し、MessageBox を介して表示することですが、TextBox の更新をまったく拒否します。

ところで、私はこれを 12 時間近く連続して解決しようとしてきましたが、それが私がここで質問している唯一の理由です。

4

2 に答える 2

1

最終的には解決しましたが、理想的な方法ではありませんでした。

親では、次のように開きます。

    private void BrowserToolStripButton_Click(object sender, EventArgs e)
    {    
        using (BrowserForm form = new BrowserForm())
        {
            form.ShowDialog(this);
        }
    }

親にもこのメソッドがあります:

    public void SendStringsToParent(string s, string s2, string s3)
    {
        textBox.Text = s;
        textBox2.Text = s2;
        textBox3.Text = s3;
    }

次に、子(ブラウザ)フォームに次のものがあります。

    private void Button1_Click(object sender, EventArgs e)
    {
        string stringToSend = "sending these";
        string stringToSend2 = "strings to the";
        string stringToSend3 = "parent form";
        MainForm parent = (MainForm)this.Owner;
        parent.SendStringsToParent(stringToSend, stringToSend2, stringToSend3);
    }

これは機能していますが、モーダル フォームであるという事実を回避する必要がありました。両方のフォームを完全に制御しながらこれを行う方法がある場合は、誰かから聞いてみたい.

于 2013-04-02T00:35:37.703 に答える
0

このメソッドについて確認してください。

ただし、個人データを渡す場合、これは役に立ちません。

ブラウザページで:

protected void Button1_Click(オブジェクト送信者, EventArgs e) {

      string modulename = "Agile Software Development ";
      string url;



      url = "page2.aspx?module=" +modulename;
      Response.Redirect(url);

}

親のページで

string RetrievedValue;protected void Page_Load(オブジェクト送信者, EventArgs e) {

      this.TextBox1.Text = Request.QueryString["module"];

    //  RetrievedValue = this.TextBox1.Text;

}

于 2013-04-01T14:31:46.640 に答える