如何从其他表单设置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
当我调试时。尝试提交文本时返回nullMain
表单
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)
{
}
}
}
我假设您得到了一个null引用异常。如果您发布主表单代码,这将非常有用。根据我的理解,你应该传入主表单引用,这就是为什么你得到了一个null引用。
在您的代码中,更改构造函数如下(ParentForm是父窗体的类名)
public MsgInput(ParentForm mainForm)
{
this.mainForm = mainForm;
InitializeComponent();
}
并且以的主要形式
MsgInput frm = new MsgInput(this);
frm.input_type = "echo";
frm.Show(this);
否则,请分享完整的代码,我们可以快速帮助