我还在学习C#,如果这是一个愚蠢的问题,请原谅我。另外,由于我不确定该如何表达,所以请原谅我的冗长。
我的场景:
我正在为我的应用程序使用DockPanel Suite,我有一个ParentForm
、一个NotesForm
和一个BrowserForm
(实际上,我有几个其他类型的 BrowserForm
,但如果我能让一个正常工作,我应该就能让其他的正常工作)
ParentForm
在应用程序启动时加载,它加载了NotesForm
,通过在ParentForm
中点击按钮触发加载BrowserForm
,然后该实例打开并保持打开状态,不会关闭。
因此,在我输入信息到NotesForm
时,我已经有了所有三个窗体的建立实例。(我想那就是问题所在)
我的目标是将在NotesForm
的textBox1
中键入的信息传递到一个字符串变量中,称为notesText
,该变量位于 BrowserForm
上,而无需在NotesForm
上单击任何内容,我认为可能是通过TextChanged
事件实现的。
目前,我能够使用属性(get、set)将信息传递到窗体上,但是我必须在NotesForm
和BrowserForm
上单击一个按钮才能实现。
我包含了一种简化的代码,展示了我目前的做法。我的完整代码相当大,所以只是试图节省混淆并展示我正在进行的概念。
父窗体
public partial class parentForm : Form
{
private notesForm notesForm = new notesForm();
public parentForm()
{
InitializeComponent();
}
private void parentForm_Load(object sender, EventArgs e)
{
notesForm.Show(mainDock, DockState.DockLeft);
}
private void tb1_Click(object sender, EventArgs e)
{
BrowserForm.notesText= notesForm.passInfo;
}
笔记表单
public partial class notesForm : DockContent
{
private string _passInfo;
public notesForm()
{
InitializeComponent();
}
public string passInfo
{
get { return textBox1.Text; }
set
{
_passInfo = value;
textBox1.Text = _passInfo;
}
}
}
浏览器表单
public partial class BrowserForm : DockContent
{
private string passInfo;
public BrowserForm()
{
InitializeComponent();
}
public string passInfo
{
get
{
return _passInfo;
}
set
{
_passInfo = value;
notesText = _passInfo;
}
}
string notesText;
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(notesText);
}
}
}
所以目前这个工作方式是可行的,但是为了让它工作,我必须在父表单上单击一个按钮,然后在浏览器表单上单击。理想情况下,我需要在你在笔记表单中输入文本框后将信息传递给浏览器表单。如果有帮助的话,输入到文本框中的信息是静态的,始终为9个数字字符(电话号码)。
另外,我的应用程序背景是什么?我用它来访问我们内部网络中的各种工具。它会自动登录并将其合并到一个应用程序中,而不是打开40-80个不同的浏览器窗口,最终(希望)从这些工具中自动提取一些信息,因此我们不必再搜索页面。 工具只是自动拉取。这并不是恶意行为,我也不是垃圾邮件发送者或其他任何东西,我为10家不同公司提供ISP技术支持,每家公司都有8-10个服务工具。
任何关于此事的帮助将不胜感激,或者如果有更简单的方法可以实现我所做的事情,我也很乐意听取意见。如果您想看到我的整个代码(如果有帮助),请告诉我,我不介意发布它,只是非常繁琐。