Tag: 用户界面

相当于C#中的PostMessage与主线程与MVVM同步?

我必须坚持不懈地寻找,因为这是我无法解决的另一个看似常见的问题。 这是我的问题 – 我正在使用WPF和MVVM,并且我有一个在模型中执行的状态机。 如果发生错误,我需要将信息传递给ViewModel以显示错误。 这部分似乎工作正常。 当用户单击所需行为时,模型中的代码将继续,并查看用户与之交互的对象以确定下一步操作。 问题是模型需要重新加载文件,该文件使用所述文件的内容更新GUI。 因为模型在一个线程中执行,你可以想象我接下来要问的问题 – 你到底该如何正确地与GUI同步? 在MFC中,我会使用SendMessage或PostMessage来完成GUI更新。 我读过WinForms的文章 ,建议使用InvokeRequired在必要时自动调用BeginInvoke。 我实际上不知道BeginInvoke会完成我想要的东西,所以我被鼓励学习这个。 我如何从我的模型中实际调用BeginInvoke? 这种方法甚至适用于WPF吗? 我继续并实现了一个委托,然后调用了Invoke,但是我得到了同样的错误,告诉我无法从这个线程修改集合。 我也尝试过BeginInvoke,但我认为这也行不通,因为它无论如何都会从另一个线程启动。 困惑。 如果我错过了一些非常明显的内容,这些内容已经发布在互联网上,请继续给我一个口头抨击,我可能应该得到它。 编辑 – 我应该补充一点,我正在寻找除定时器或基于BackgroundWorker的解决方案以外的东西,除非这是在WPF / MVVM中解决这个问题的唯一方法。 另外,我想知道是否有任何MVVM工具包已经具有此类function的设施……

在C#中手动复制文件时显示复制文件对话框/表单?

我通过C#手动复制一些文件夹和文件,我想向用户显示实际发生的事情。 目前,该程序看起来好像已冻结,但它实际上是在复制文件。 我认为已经有一个显示该过程的内置对话框或表单,类似于在Windows资源管理器中复制/移动文件。 有什么可用的,或者我必须从头开始创建一切? 此外,这是向用户显示某些内容正在积极进行的最佳方法吗? 谢谢您的帮助!

在Windows中自动完成文本框和“在键入时隐藏指针”

如何通过应用程序禁用“键入时隐藏指针”选项? 我遇到了光标隐藏的问题,没有按下转义或丢失窗口焦点而没有将其恢复。 该应用程序是用C#编写的,并使用WPF。 不需要技术特定的答案,因为它可能使用任何技术。 这是场景:用户可以键入TextBox,并在框下方显示自动完成列表。 一旦用户开始输入,他/她就不能再从下拉列表中选择项目,因为没有鼠标光标。 我注意到Firefox没有这种行为。 例如,在地址栏中键入URL时,鼠标光标永远不会消失。 还有其他地方我见过这种行为所以我知道它一定是可能的。 任何帮助是极大的赞赏!

如果进程要求用户输入,请以编程方式查找

我如何以编程方式(在C#中)确定,如果另外一个外部应用程序(本机,java,.NET或其他……)当前要求用户输入? 这可以在托管代码中完全完成吗? 我正在寻找的是: static Boolean IsWaitingForUserInput(String processName) { ??? } 通过要求用户输入我的意思是当应用程序要求用户输入一些数据或退出错误消息(modal dialog)并且不再能够执行其正常任务时。 正在等待用户绘制内容的绘图应用程序不在此处。 PS:经过编辑以反映底部的评论并使关注更加清晰,一些评论和答案可能与问题不完全一致。 在评估答案和评论时要考虑到这一点。

Windows窗体/ WPF太大了,我怎么能把它分开?

我即将创建WPF应用程序。 到目前为止,在uni中我们完成GUI的唯一方法是使用一个主窗口和一个代码隐藏文件来处理其按钮点击等。 我的问题是,随着应用程序的增长,GUI会增长,文件后面的代码大小可能会失控! 我已经为我的系统确定了大约15个主要用例(例如:输入详细信息,查看详细信息等…)。 我正在创建一个主窗口(大小:480×320),由15个单独的屏幕组成(每个用例一个)。 这可以通过一个居中和拉伸的TabControl来实现,它有15个TabItem。 或者更可能的是它可能只是一堆分层容器,一个在另一个之上(一次只能看到一个)。 关键是,有15个单独的屏幕,我的代码隐藏文件将变得巨大(更不用说xaml文件!):在状态之间玩杂耍 – 使14折叠/隐藏并使一个可见,处理15个不同屏幕的控件。 有没有办法拥有15个单独的表单,每个表单都有自己的代码隐藏文件,而不是一个表单上的15个TabItems,然后根据需要创建一个主引擎并将其废弃? 当然,它应该看起来好像是一种forms,而不是15种弹出窗口。 我该如何处理? 您将如何处理长达数千行的xaml和代码隐藏文件的问题?

如何在C#中启动UI线程

我知道我可以用.NET开始一个新的工作线程。 但是如何启动新的UI线程(如在MFC中)? 我不介意解决方案是否仅限于Windows机箱; 我也希望解决方案纯粹是.NET – 没有p /调用CreateThread等。 任何输入赞赏。

C#透明GUI

大家好。 我想知道如何在C#中制作一个“透明”的GUI。 现在我不是在谈论transparencykey等。 我想创建一个使用vistas航空主题的窗口,但不是表单中的控件,我只是想让它显示更多的seethru aero外观。 而且我想从窗口中删除所有按钮,图标和文本。 我该怎么办? 编辑…我找到了一个完美的例子,我想要创建。 在vista上加载Windows移动中心。 我怎样才能创建类似的东西,但没有盒子。

C# – 使用非主线程更新GUI

我有一个有类的程序 GUI 上传 和两个类之间的缓冲区 – 即用于在两个类之间进行通信。 Upload类使用Process来运行命令行FTP应用程序。 我想返回FTP应用程序生成的输出,以显示在GUI的textbox 。 我尝试使用以下被截断的代码。 Upload Class(beginProcess()是一个用于启动Thread的方法(此处未显示)): public delegate void WputOutputHandler(object sender, DataReceivedEventArgs e); class Upload { private WputOutputHandler wputOutput; beginProcess() { Process pr = new Process(); pr.StartInfo.FileName = @”wput.exe”; pr.StartInfo.RedirectStandardOutput = true; pr.StartInfo.UseShellExecute = false; pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived); pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived); pr.Start(); pr.BeginOutputReadLine(); pr.WaitForExit(); […]

右键单击选择.Net TreeNode

当用户右键单击时,我试图在我的树视图上显示一个弹出菜单 – 允许他们选择要应用于所选节点的上下文敏感操作。 用户必须左键单击节点,然后右键单击以选择。 是否可以右键单击节点选择该节点 – 如果是,那么执行此操作的最佳方法是什么。

在WPF中向鼠标旋转图形(如模拟转盘)

在WPF / C#中,如何旋转“图形”以面向当前鼠标位置? 基本上我想要的是一个“轮”UI控件(如模拟音量表盘 )。 我希望能够单击并拖动表盘,它将旋转以跟随鼠标。 然后,当我释放鼠标时,它将停止跟随(显然!)。 我该如何创建其中一个? 一个人已经存在吗?