为什么同一个函数做两件不同的事情
本文关键字:两件 不同的事 同一个 函数 为什么 | 更新日期: 2023-09-27 18:31:30
我是C#的业余爱好者,我不明白这里发生了什么。这不是一个真正的问题,因为我可以对此进行快速修复,但我仍然想知道为什么。
免责声明:我知道这可能不是设计这个程序的最佳方式,但我有很短的时间来开发它,我只是想在截止日期前发布它。
我的程序中有一个主窗体。当按下 2 个按钮中的 1 个时,此窗体调用第二个窗体。这些按钮使用相同的功能打开第二个窗体:
private void setupShow(int show)
{
fSetup setup = new fSetup(show);
setup.Show();
setup.FormClosed += new FormClosedEventHandler(setup_FormClosed);
}
当 button1 调用该函数时,它会隐藏主窗体并打开下一个窗体。但是,当第二个按钮调用该函数时,它会使主窗体保持打开状态,但仍会打开第二个窗体。
那么是什么原因造成的呢?
Button1 的代码比 button2 多得多,如果需要这些功能,我可以将它们发布在这里,但它会填满屏幕的大部分。
编辑:
int show;
只是我用于以第二种形式执行的功能的变量。就窗户关闭而言,它与任何事情无关。
按钮 1:仅调用此函数。该函数插入到数据库中,然后获取该行的插入 ID 并将其传递给第二个窗体
private void CheckFields()
{
OleDbCommand insertParty;
OleDbDataAdapter partyAdapt = new OleDbDataAdapter();
int nameL = PName.Text.Length;
int newPartyID = 0;
if (nameL > 0)
{
String test = "INSERT INTO Parties (PartyName, BackgroundImg) VALUES (?, ?)";
insertParty = new OleDbCommand(test, Parties);
insertParty.Parameters.AddWithValue("PartyName", PName.Text);
insertParty.Parameters.AddWithValue("BackgroundImg", tBrowse.Text);
Parties.Open();
insertParty.ExecuteNonQuery();
NewPartyForm.ActiveForm.Visible = false;
OleDbCommand selectnewParty;
OleDbDataAdapter newpartyAdaptr = new OleDbDataAdapter();
String selectNew = "SELECT TOP 1 PartyID, PartyName FROM Parties ORDER BY PartyID DESC";
selectnewParty = new OleDbCommand(selectNew, Parties);
OleDbDataReader newReader = selectnewParty.ExecuteReader();
while (newReader.Read())
{
newPartyID = newReader.GetInt32(0);
}
setupShow(newPartyID);
}
else
MessageBox.Show("Please Create a Party Name");
}
按钮 2:从组合框中的字符串中剪切出整数并将其传递给第二种形式
private void bLoad_Click(object sender, EventArgs e)
{
Object selectedParty = cLoadP.SelectedItem;
String sP = selectedParty.ToString();
String d1 = " - ";
char[] delim = d1.ToCharArray();
String[] numS = sP.Split(delim);
setupShow(Convert.ToInt32(numS[0]));
}
就像我说的,这段代码是由业余爱好者开发的,而且速度非常快。这不是我通常做事的方式,但我没有太多时间真正思考。哈哈
第二形式初始函数:
public fSetup(int partyID)
{
InitializeComponent();
pID = partyID;
lpID.Text += " " + pID.ToString();
}
我怀疑不同行为的原因是按钮 1 代码中的这一行:
NewPartyForm.ActiveForm.Visible = false;
按钮 2 的代码中没有类似的行。