如何从其他表单设置Web浏览器文档文本

本文关键字:Web 浏览器 文档 文本 设置 表单 其他 | 更新日期: 2023-09-27 18:20:00

我创建了一个简单的消息框来获取用户输入,并将结果设置到以前表单的Web浏览器中。
这是我的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)
        {
        }
    }
}

如何从其他表单设置Web浏览器文档文本

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

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

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

并且以的主要形式

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

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