当前位置: 首页 > 知识库问答 >
问题:

在C#WPF中使用按钮事件时的流程流

蔺翰音
2023-03-14

我刚刚开始使用C#WPF表单,遇到了一个小问题,我找不到解决方法。

我有一个按钮,目前只是检查一个文件夹是否存在。

正确的流程是;

  1. 写入文本框以表示进程已启动。
  2. 执行该过程。
  3. 写入文本框以表示进程已完成(是否成功)

实际发生的情况是,当按下按钮时,所有操作都完成了,然后写入textbox。

有没有一种方法让文本框在每个过程结束时填充--计划是在一个按钮上执行多个操作,最终按下并记录每一个操作--最后的过程可能需要30多分钟,因此需要在过程工作时保持用户更新?

    private void Button_Check_Click(object sender, EventArgs e)
        {  
            textbox_OutputBox.Text = textbox_OutputBox.Text.Insert(0, DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + " : " + "Folder check started" + Environment.NewLine);
            
                if (!Directory.Exists("C:\\Windows"))
                {
                    textbox_OutputBox.Text = textbox_OutputBox.Text.Insert(0, DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + " : " + "Folder missing" + Environment.NewLine);
                }
                else
                {
                    textbox_OutputBox.Text = textbox_OutputBox.Text.Insert(0, DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss") + " : " + "folder not missing" + Environment.NewLine);
                }
            
        }

希望这一切都是有意义的,但如果不是,请让我知道。多谢了。

共有1个答案

子车成和
2023-03-14

如果处理需要很长时间,您可能希望在后台线程上运行它,以避免阻塞UI。报告进度的一种方法是采用处理方法更新的参数和定期更新主线程上UI的计时器。例如:

public void MyProcess(ConcurrentQueue<string> processedItems, CancellationToken cancel){
    foreach(var item in items){
        cancel.ThrowIfCancellationRequested();
        // do processing
        processedItems.Add(item.ToString());
     }
 }

添加一个取消相应cancellationTokenSource的按钮,以及一个使用processedItems集合中的所有行每秒左右更新textbox的计时器。使用task.run在后台线程上运行该方法,并记住在try块中等待任务以捕获任何异常,以便能够处理它们。

 类似资料:
  • 本文向大家介绍C# WPF 自定义按钮的方法,包括了C# WPF 自定义按钮的方法的使用技巧和注意事项,需要的朋友参考一下 本文介绍WPF一种自定义按钮的方法。 实现效果 使用图片做按钮背景; 自定义鼠标进入时效果; 自定义按压效果; 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承自Button; 创建一个资源文件ButtonStyles.xaml; 在资

  • 我是python的新手,尝试创建一个应用程序来处理来自不同CSV文件的数据。我的应用程序总是处理第一个打开的CSV文件数据,我不知道哪里是错误的在我的代码?下面是我的示例: 示例1.CSV: ABC、DEF、GHI 1、3、7 我的应用程序将打开CSV文件,并将CSV文件的头,如ABC、DEF、GHI放入wx.listbox选择和处理一些如果你点击选择。首先打开sample1.csv看起来不错,但

  • 按钮事件 1、有注册错误/正确提示 bp MessageBoxA bp rtcMsgBox 如果事先找不到按钮事件,可以通过下消息断点,返回后回溯即可找到按钮事件起始位置 2、无任何提示 bp GetDlgItem 可以通过bp GetDlgItem获取按钮事件代码 3、未注册一启动或者关闭就跳出个注册框或者提示框 bp RegOpenKey(A) bp CreateFileA bp GetPri

  • 我正在用C#WPF做一个项目,它包含在一个客户机管理中,在那里我添加了新的客户机,在一个txt文档中有save,我有一个listview,在那里我可以看到所有添加的客户机,但现在我想实现一个delete按钮,在那里我从listview中选择一个客户机,并可以删除它。如果我现在做的正确,如果有人能帮我…,…谢谢。

  • 我正在使用WPF构建一个包含多个按钮的windows窗体应用程序。我想通知用户,他应该加载一个pdf,然后他可以按下其他按钮,通过使加载pdf按钮闪烁/振动,如果用户点击其他地方,没有pdf加载。 例如,如果在Microsoft Paint打开时尝试单击编辑颜色框之外的任何地方,则会发生类似的行为。(见附件gif) 有人有主意吗?

  • 本文向大家介绍C#动态生成按钮及定义按钮事件的方法,包括了C#动态生成按钮及定义按钮事件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#动态生成按钮及定义按钮事件的方法。分享给大家供大家参考。具体实现方法如下: 1、后台生成input的button按钮 写入到界面中 2、后台回发拦截与处理 希望本文所述对大家的C#程序设计有所帮助。