我有一个相当有趣的问题,但我是C#的新手。所以请帮忙。在我的程序中有一个带按钮的主窗体。当我点击此按钮时,会出现另一个表单。这个子表单有一个" back"按钮和"保存"按钮。当我点击"保存"保存数据并打开浏览器,以便我可以选择一个文件。当我点击"返回"它应该关闭子表单。我的问题是我无法做到"停止"那里。关闭子窗体后(尽管使用"返回")它继续转到主窗体中用于打开浏览器的方法,然后一直持续到另一个"如果"是假的。我怎么能让它停在那里? (顺便说一句,开放浏览器方法以主窗体形式编写的原因是有几个子窗体需要从主窗体打开,所有子窗体都具有相同的样式)。 编辑: 在子表单(GuaranteesForm)中我有
private void btnBack_Click(object sender, EventArgs e)
{
this.Close();
MessageBox.Show("No Data was saved");
return;
}`
然后它进入主要形式:
private void button8_Click(object sender, EventArgs e)
{
try
{
GuaranteesForm frm = new GuaranteesForm(Convert.ToInt32(txtProjectReferenceCode.Text),
txtIndent.Text, 7, "");
frm.ShowDialog();
lblId.Text = _entit.C02_ProjectDocuments.OrderByDescending(i => i.ID).First().ID.ToString();
UploadFirst();
lblId.Text = "";
RefreshData();
}
catch (Exception)
{ }
}
然后是第一次加载的方法:
private void UploadFirst()
{
OpenFileDialog opf = new OpenFileDialog { Multiselect = true };
opf.ShowDialog();
if ((opf.FileNames.Any()))
{
tempDictionary.Clear();
foreach (var fileName in opf.FileNames)
{
FileInfo f = new FileInfo(fileName);
lstFile.Items.Add(f.Name);
tempDictionary.Add(f.FullName, f.Name);
}
}
else
{
MessageBox.Show("File Was NOT saved !");
return;
}
如果我按回它打开浏览器然后我关闭浏览器并显示:文件未保存
答案 0 :(得分:0)
ShowDialog
方法挂起当前方法,直到该对话框关闭,然后继续挂起的方法。主表单上的return
方法中的btnBack_Click
语句无效 - 您需要告诉主表单用户已决定的内容。这可以使用DialogResult
属性完成。
相反在对话框中使用this.Close()
,使用DialogResult = DialogResult.Cancel
:
private void btnBack_Click(object sender, EventArgs e)
{
MessageBox.Show("No Data was saved");
DialogResult = DialogResult.Cancel; // this also closes the dialog
}
在 导致文件保存的按钮的事件处理程序中,使用DialogResult = DialogResult.OK
代替Close()
:
private void btnSave_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK; // this also closes the dialog
}
然后在主表单中,您可以根据用户的决定采取行动:
if (frm.ShowDialog() != DialogResult.OK)
{
// bail out
return;
}
// continue showing the browser and saving the file
PS。 Button
具有DialogResult
属性,该属性会自动设置对话框结果,并在其格式为DialogResult.None
以外时关闭该表单,而不需要Click
事件处理程序。
答案 1 :(得分:0)
您应该在" save"中调用子窗体中的uploadfirst()方法。按钮事件处理程序从"按钮8"中删除它eventhandler