我有以下代码行在MessageBox中显示一个窗口:
MessageBox.Show(new ElbaKostenstellen(titel, loginid).ShowDialog().ToString());
问题是,当我关闭它时,另一个MessageBox以true
或false
开头,但我从未告诉过它。
我该如何解决这个问题?
以下是更相关的代码:
string ganzes = sr.ReadToEnd();
string[] allezeilen = ganzes.Split('\n');
for (int i = 0; i < allezeilen.Length - 1; i++)
{
string[] separated = allezeilen[i].Split(';');
String datum = separated[0];
String titel = separated[1];
if (titel.Contains('"'))
{
titel = titel.Replace('"', ' ');
}
String betrag = separated[3];
buchrep.bookFromElbaCSV(datum, titel, betrag, loginid);
//ElbaKostenstellen ek = new ElbaKostenstellen(titel, loginid);
//ek.Show();
MessageBox.Show(new ElbaKostenstellen(titel, loginid).ShowDialog().ToString());
}
答案 0 :(得分:4)
为了显示调用ShowDialog
的表单就足够了,不需要调用MessageBox.Show
。尝试;
new ElbaKostenstellen(titel, loginid).ShowDialog();
而不是
MessageBox.Show(new ElbaKostenstellen(titel, loginid).ShowDialog().ToString());
答案 1 :(得分:1)
你写这个字符串时告诉它
MessageBox.Show(new ElbaKostenstellen(titel, loginid).ShowDialog().ToString());
所以你需要在不调用ShowDialog()的情况下从ElbaKostenstellen获取消息
答案 2 :(得分:1)
让我们来看看
MessageBox.Show(new ElbaKostenstellen(titel, loginid).ShowDialog().ToString());
评估的第一位是
new ElbaKostenstellen(titel, loginid).ShowDialog()
这表示对话框和代码的执行被阻止,直到对话框关闭。
然后
MessageBox.Show(...)
执行并显示上一个对话框结果的字符串表示。
我怀疑您不需要MessageBox.Show(..)
,只需要new ElbaKostenstellen(titel, loginid).ShowDialog()
答案 3 :(得分:0)
这是因为ShowDialog的返回值为true或false。
正如此处所写 - http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx
返回值
类型:System.Nullable类型为Boolean的Nullable值 指定活动是接受(true)还是取消 (假)。返回值是DialogResult属性的值 在窗口关闭之前。