我有兩個表格,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();
}
uj5u.com熱心網友回復:
可能更好地翻轉它:
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 文本框,或提供獲取其值的屬性:
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 類的專案中重用..
uj5u.com熱心網友回復:
你倒著看這個。配置對話框不應嘗試更新主表單。相反,它應該只通過公共方法/屬性公開配置資料。
由于ShowDialog阻塞,您可以在它回傳資料后查詢配置表單物件:
Config config = new Config();
config.ShowDialog();
var ftpUser = config.FTPUser;
var pwd = config.FTPPwd;
var addr = config.FTPAddr
另一方面,我不會在這樣的建構式中執行阻塞作業。使用“OnShown”事件是一個更好的地方。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/437739.html
下一篇:如何在我的網址末尾設定引數
