关闭表单然后在另一个表单中执行操作
Close a form then do a action in another forme
我有两个表格,MainForm
和 Config
,当我的软件打开时,MainForm
和 Config
表格也打开了。
public mainForm()
{
InitializeComponent();
this.Show();
connectionStatusToolStrip.Text = "**********";
connectionStatusToolStrip.BackColor = Color.Red;
statusConnection = false;
tryConnect = true;
Config config = new Config();
config.ShowDialog();
}
出于焦点原因,我将 Config
表格显示为 Dialog
。
当我关闭 Config
表单时,我需要刷新或类似的东西, MainForm
.
这是配置表单上“确定”按钮的代码。
private void ok_button(object sender, EventArgs e)
{
mainForm.USER_FTP = UsuerConfigTextBox.Text.ToString();
mainForm.PASSWORD_FTP = PasswordConfigTextBox.Text.ToString();
mainForm.IP_CONNECTION = IpConfigTextBox.Text.ToString();
this.Close();
}
翻转过来可能更好:
public mainForm()
{
InitializeComponent();
this.Show();
connectionStatusToolStrip.Text = "**********";
connectionStatusToolStrip.BackColor = Color.Red;
statusConnection = false;
tryConnect = true;
Config config = new Config();
var r = config.ShowDialog();
if(r == DialogResult.OK){
USER_FTP = config.UsuerConfigTextBox.Text;
PASSWORD_FTP = config.PasswordConfigTextBox.Text;
IP_CONNECTION = config.IpConfigTextBox.Text;
//connect to server?
}
}
您需要制作 user/pass/ip 文本框 public,或提供获取其值的属性:
partial class Config: Form{
public string UserName => UsuerConfigTextBox.Text;
...
}
...
if(r == DialogResult.OK){
USER_FTP = config.UserName;
...
//connect to server?
}
这样您的 ConfigForm 根本不需要知道 MianForm 的存在:Mainform 创建配置表单,显示它,等待它关闭并从中提取数据。 ConfigForm 可以在另一个甚至 没有 MainForm class..
的项目中重用
你是在倒着看。配置对话框不应尝试更新主窗体。相反,它应该只通过 public methods/properties.
公开配置数据
由于 ShowDialog
块,您可以在它 returns 之后查询配置表单对象以获取数据:
Config config = new Config();
config.ShowDialog();
var ftpUser = config.FTPUser;
var pwd = config.FTPPwd;
var addr = config.FTPAddr
另一方面,我不会在这样的构造函数中执行阻塞工作。使用 'OnShown' 事件是一个更好的地方。
我有两个表格,MainForm
和 Config
,当我的软件打开时,MainForm
和 Config
表格也打开了。
public mainForm()
{
InitializeComponent();
this.Show();
connectionStatusToolStrip.Text = "**********";
connectionStatusToolStrip.BackColor = Color.Red;
statusConnection = false;
tryConnect = true;
Config config = new Config();
config.ShowDialog();
}
出于焦点原因,我将 Config
表格显示为 Dialog
。
当我关闭 Config
表单时,我需要刷新或类似的东西, MainForm
.
这是配置表单上“确定”按钮的代码。
private void ok_button(object sender, EventArgs e)
{
mainForm.USER_FTP = UsuerConfigTextBox.Text.ToString();
mainForm.PASSWORD_FTP = PasswordConfigTextBox.Text.ToString();
mainForm.IP_CONNECTION = IpConfigTextBox.Text.ToString();
this.Close();
}
翻转过来可能更好:
public mainForm()
{
InitializeComponent();
this.Show();
connectionStatusToolStrip.Text = "**********";
connectionStatusToolStrip.BackColor = Color.Red;
statusConnection = false;
tryConnect = true;
Config config = new Config();
var r = config.ShowDialog();
if(r == DialogResult.OK){
USER_FTP = config.UsuerConfigTextBox.Text;
PASSWORD_FTP = config.PasswordConfigTextBox.Text;
IP_CONNECTION = config.IpConfigTextBox.Text;
//connect to server?
}
}
您需要制作 user/pass/ip 文本框 public,或提供获取其值的属性:
partial class Config: Form{
public string UserName => UsuerConfigTextBox.Text;
...
}
...
if(r == DialogResult.OK){
USER_FTP = config.UserName;
...
//connect to server?
}
这样您的 ConfigForm 根本不需要知道 MianForm 的存在:Mainform 创建配置表单,显示它,等待它关闭并从中提取数据。 ConfigForm 可以在另一个甚至 没有 MainForm class..
的项目中重用你是在倒着看。配置对话框不应尝试更新主窗体。相反,它应该只通过 public methods/properties.
公开配置数据由于 ShowDialog
块,您可以在它 returns 之后查询配置表单对象以获取数据:
Config config = new Config();
config.ShowDialog();
var ftpUser = config.FTPUser;
var pwd = config.FTPPwd;
var addr = config.FTPAddr
另一方面,我不会在这样的构造函数中执行阻塞工作。使用 'OnShown' 事件是一个更好的地方。