在单击按钮上设置IsAccessible是否为false或跳过任何编码?

时间:2018-05-01 13:29:20

标签: c# winforms

我想设计一个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;(在对文件进行任何修改之前),它会跳过还是没有正确运行按钮单击中的所有代码事件

这可能是一个愚蠢的问题,但我是新手,我只是想知道...谢谢

1 个答案:

答案 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;