【发布时间】:2013-08-29 04:20:28
【问题描述】:
我仍在学习 C#,如果这是一个愚蠢的问题,请原谅我,也请原谅我的长篇文章,因为我不确定如何说这个,而不是“长”的方式。
我的场景:
我在我的应用程序中使用DockPanel Suite,并且我有一个ParentForm、NotesForm 和BrowserForm(我实际上还有很多BrowserForm 类型,但如果我可以让它工作到一个我应该能够使它对其他人起作用)
所以ParentForm 在应用程序启动时加载,当它加载时加载NotesForm 和BrowserForm 通过来自ParentForm 的按钮单击事件加载,然后该实例打开并保持打开状态并将没有关闭。
所以当我在NotesForm 中输入信息时,我已经建立了所有 3 种形式的实例。 (我认为这就是问题所在)
我的目标是获取在NotesForm 上输入textBox1 的信息到一个字符串变量,让我们在BrowserForm 上调用它notesText,而无需单击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 种工具用于他们的服务。
对此的任何帮助将不胜感激,或者如果有更简单的方法来处理我正在做的事情,我也很乐意听到。另外,如果您想查看我的整个代码(如果有帮助),请告诉我,我不介意发布它,这非常麻烦。
【问题讨论】:
-
文字本·阿弗莱克的圣墙
-
@Jonesy 大声笑我知道很抱歉可能杀了但比那些没有意义的烦人的简短问题更好。