如何从另一个表单设置webbrowser documenttext?

时间:2014-08-30 10:49:55

标签: c# winforms

我创建一个简单的消息框来获取用户输入并将结果设置为以前形式的webbrowser。
这是我的MsgInput源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

public partial class MsgInput : Form
{
    private readonly Main mainForm;
    public string input_type;
    string script;

    public MsgInput()
    {
        this.mainForm = mainForm;
        InitializeComponent();
    }

    private void MsgInput_Load(object sender, EventArgs e)
    {
        if (input_type == "echo")
        {
            richTextBox1.Text = "Echo : void echo ( string $arg1 [, string $... ] )";

        }
    }

    private void btnOk_Click(object sender, EventArgs e)
    {
        if (input_type == "echo")
        {
            script = mainForm.webBrowser1.DocumentText;
            if (chkNewLine.Checked == true)
            {
                script += "\n";
            }
            script += "echo " + txtInput.Text;
            mainForm.webBrowser1.DocumentText = script;
            this.Close();
        }
    }
}

并且我没有在第一种形式中添加任何内容,只需将webbrowser修饰符设置为public 当我调试。当我尝试提交文本时返回null

Main表格

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

    namespace EasyPHP
    {
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }

        private void echoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var msg = new MsgInput();
            msg.input_type = "echo";
            msg.Show();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            webBrowser1.DocumentText = "<pre>";
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

我假设你得到一个空引用异常。如果您发布主表单代码将非常有用。根据我的理解,你应该传递主要的表格参考,这就是为什么你得到一个空的参考。

在您的代码中,更改构造函数如下(ParentForm是父表单的类名)

public MsgInput(ParentForm mainForm)
        {
            this.mainForm = mainForm;
            InitializeComponent();
        }

并以主要形式

MsgInput frm = new MsgInput(this);
            frm.input_type = "echo";
            frm.Show(this);

否则,请分享完整的代码,我们可以快速帮助