C#窗体项目



第一个表单类的方法:

private void englishToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide();
var Editor = new Editor();
Editor.Engprop = 1;
Editor.Closed += (s, args) => this.Close();
Editor.Show();
}

第二种形式类别的方法:

public partial class Editor : Form
{
public int Engprop { get; set; }
public Uri MyProperty { get; set; }
public Editor()
{
InitializeComponent();
webBrowser1.ScriptErrorsSuppressed = true;
}
Uri temp = new Uri("file:///C:/Users/PC/Desktop/projese302/newtmp.html");
Uri eng = new Uri("file:///C:/Users/PC/Desktop/projese302/engtemp.html");
private void Editor_Load(object sender, EventArgs e)
{
if (Engprop==1)
{
webBrowser1.Navigate(eng);
}
}

我试图在Engprop变为1时(当用户单击ToolStripMenu的项目时(,它应该导航engURL,但它不能正常工作。我将感谢你的帮助。

我假设Editor_Load方法是从表单的OnLoad事件调用的。

如果是这样的话,我不确定这个事件是什么时候提出的。。。可以在构造函数之后(它解释了为什么你有这个问题(,也可以在Show方法之后(在这种情况下,我不知道为什么它不起作用(

尝试检查事件是在设置Engprop属性(调试+断点(之前还是之后引发的

无论如何,我认为您的代码缺乏体系结构,因为使用Editor类的人需要知道,只能在构造函数和Show方法之间更改Engprop。

我认为你可以制作一个更好的/可重复使用的代码,如果:

  • 将Engprop属性设置为只读,并在构造函数中接受他的值:这通常是在有人实例化您的类时设置语言时完成的,并且永远不会更改
  • 在Engprop的setter中,当它发生更改时会引发一个事件:当您允许在创建实例后更改语言时,就会发生这种情况。因此,您的Editor类可以向该事件添加一个处理程序,并在每次有人更改此属性时更改页面的语言

最新更新