我想设计一个Windows窗体应用程序,当我单击一个按钮时,该按钮被禁用,并且还显示等待光标以指示程序仍在运行,然后执行分配给按钮单击事件的所有内容在最后一个按钮再次启用。
这是我的代码
Cursor.Current = Cursors.WaitCursor;
button1.IsAccessible=false;
string path=textBox1.Text;
var files=Directory.GetFiles(path,"*.xml",SearchOption.AllDirectories);
foreach (var item in files)
{
XDocument xdoc=XDocument.Load(item);
xdoc.Descendants("title").First().Value="Resumen";
xdoc.Descendants("source").First().Value="Apolpa";
xdoc.Descendants("volume").First().Value="300";
xdoc.Descendants("issue").First().Value="XXV";
xdoc.Descendants("label").First().Value="[1]";
xdoc.Save(item);
}
MessageBox.Show("Complete!");
button1.IsAccessible=true;
我的问题是,因为我在代码的最开头添加了button1.IsAccessible=false;
(在对文件进行任何修改之前),它会跳过还是没有正确运行按钮单击中的所有代码事件
这可能是一个愚蠢的问题,但我是新手,我只是想知道...谢谢
答案 0 :(得分:0)
您可以使用button1.Enabled=false;
代替button1.IsAccessible=false;
和button1.Enabled=true;
代替button1.IsAccessible=true;
,并保持Cursor.Current = Cursors.WaitCursor
原样。
此外,我希望在这种情况下使用进度条。 检查以下代码:
Cursor.Current = Cursors.WaitCursor;
button1.Enabled=false;
//set the starting value of progressBar to 0
progressBar1.Minimum=0;
string path=textBox1.Text;
var files=Directory.GetFiles(path,"*.xml",SearchOption.AllDirectories);
//set the max value of progressBar to the no. of files
progressBar1.Maximum = files.Length;
foreach (var item in files)
{
//the value of the progressBar increases by +1 for each file
progressBar1.Value = progressBar1.Value+1;
XDocument xdoc=XDocument.Load(item);
xdoc.Descendants("title").First().Value="Resumen";
xdoc.Descendants("source").First().Value="Apolpa";
xdoc.Descendants("volume").First().Value="300";
xdoc.Descendants("issue").First().Value="XXV";
xdoc.Descendants("label").First().Value="[1]";
xdoc.Save(item);
}
MessageBox.Show("Complete!");
button1.Enabled=true;