c# - 是否在按钮单击停止或跳过任何编码时将 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;
在代码的最开头添加了(在对文件进行任何修改之前),它会跳过或不正确运行按钮单击事件中的所有代码吗?
这可能是一个愚蠢的问题,但我是新手,我只是想确定......谢谢
解决方案
您可以使用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;
推荐阅读
- typeerror - 如何解决 TypeError: Can't use a string pattern on bytes-like objects
- python - PerfectSeparationError:检测到完美分离,结果不可用
- ruby-on-rails - Rails:使用 Typhoeus 缓存 API 请求
- flutter - 有没有办法通过在 hive db flutter 中加入两个框来获取数据?
- reactjs - 为什么 React 源代码中的效果被命名为“被动效果”?
- gitlab - 只有在批准和合并后才启动管道
- mysql - 如何删除mysql中两个表之间的关系?
- sql - 无限连接到同一个表直到存在
- r - R perform summary operation and subset result by data.table column
- javascript - 如何在 react-native 中设置警报按钮?