[英]Show messagebox over Save dialog in C#
SaveFileDialog savefileDialog1 = new SaveFileDialog();
DialogResult result = savefileDialog1.ShowDialog();
switch(result == DialogResult.OK)
case true:
//do something
case false:
MessageBox.Show("are you sure?","",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
單擊“保存”對話框上的“取消”后如何在“保存的日志”框上顯示消息框,即“保存”對話框應顯示在背景上。
如果需要取消文件保存對話框中的消息框的原因是因為您要通過未保存的更改來關閉事情,那么我建議將對文件保存對話框的調用置於循環中,一直循環到將標志設置為如果結果不正確,請停止循環並調用消息框。 例如:
// lead-up code
SaveFileDialog sft = new SaveFileDialog();
BOOL bDone;
do
{
if (DialogResult.OK == sft.ShowDialog())
bDone = true;
else
{
DialogResult result = MessageBox.Show("Are you sure you don't want to save the changed file?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
bDone = (result == Yes) ? true : false;
}
} while (!bDone);
// carry on
這樣,“文件保存”對話框的行為與Windows應用程序中其他對話框的行為一致, 並且如果用戶不小心在“文件保存”對話框中單擊“取消”,則可以讓用戶繼續保存文件。
您不能使用SaveFileDialog
類來做到這一點。
我將不得不第二次潤滑。 使用SaveFileDialog類無法完成。
您基本上想要做的是捕獲SaveFileDialog上的特定按鈕單擊事件,該事件對該類不可用。 如果您真的想要這種功能,一個解決方案是滾動您自己的保存對話框,以便您可以按自己的方式處理每個按鈕的單擊。
據我所知,您無法使用SaveFileDialog在純.Net中完成所需的操作。 如果您去Windows並收聽實際的Windows消息並響應click事件消息等,則可能可以完成此操作。我寧願避免這樣做。
您可能會尋找第3方對話類,或者編寫自己的對話類。
順便說一句,有一種顯示和檢查對話框的更有效的方法。 像這樣:
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if( saveFileDialog1.ShowDialog() == DialogResult.OK )
{
// Code here...
} else Application.DoEvents();
通常,使程序的用戶界面與文件系統互操作的方式與大多數其他Windows程序不同,通常不是一個好主意。 這就是為什么沒有簡單的方法可以做到這一點的原因。
您可以做一些修改:
private void Form1_Load(object sender, EventArgs e)
{
DialogResult result = showDialog();
if (result == DialogResult.OK)
{
//Ok
}
else
{
DialogResult r = MessageBox.Show("Are you sure?", "Sure?", MessageBoxButtons.YesNo);
if(r.ToString()=="No")
{
showDialog();
}
}
}
public DialogResult showDialog()
{
SaveFileDialog savefileDialog1 = new SaveFileDialog();
DialogResult result = savefileDialog1.ShowDialog();
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.