首页 > 解决方案 > 是否在按钮单击停止或跳过任何编码时将 IsAccessible 设置为 false?

问题描述

我想设计一个 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;在代码的最开头添加了(在对文件进行任何修改之前),它会跳过或不正确运行按钮单击事件中的所有代码吗?

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

标签: c#winforms

解决方案


您可以使用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;

推荐阅读