我仍在学习 C#,所以如果这是一个愚蠢的问题,请原谅我,也请原谅我的长篇文章,因为我不确定除了“长”方式之外如何说这个。
我的场景:
我正在为我的应用程序使用DockPanel Suite并且我有ParentForm
一个NotesForm
and BrowserForm
(我实际上还有很多BrowserForm
类型,但如果我能让它适用于一个,我应该能够让它适用于其他类型)
因此ParentForm
,在应用程序启动时加载,当它加载时,它会NotesForm
通过BrowserForm
按钮单击事件加载ParentForm
,然后该实例打开并保持打开状态并且不会关闭。
因此,当我在其中输入信息时,NotesForm
我已经建立了所有 3 种形式的实例。(我认为这就是问题所在)
我的目标是获取在字符串变量上输入的信息,textBox1
让NotesForm
我们调用它notesText
,BrowserForm
而无需单击NotesForm
我认为是通过TextChanged
事件的任何内容。
我目前能够使用属性(获取、设置)将信息传递给表单,但我必须单击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 种工具用于他们的服务。
对此的任何帮助将不胜感激,或者如果有更简单的方法来处理我正在做的事情,我也很乐意听到。另外,如果您想查看我的整个代码(如果有帮助),请告诉我,我不介意发布它只是非常麻烦。