Tag: 用户界面

不要在选择某些项目时关闭ContextMenuStrip

在选择/检查某些项目后,是否可以打开ContextMenuStrip? 我计划使用一个简单的ContextMenuStrip来设置filter(这样我可以在菜单中使用相同的filter或作为右键单击选项)。 菜单列出了许多项目,我希望用户能够使用基本检查function选择项目。 完成选择后,用户可以单击“激活”filter选项,也可以单击菜单外部以激活或取消filter。 在选择/单击事件上,菜单通常会关闭。 是否可以在点击事件中保持菜单打开?

使用C#和WPF在代码中绘制线条

我正在尝试使用7段显示器创建数字时钟显示器。 我可以使用这样的代码在XAML中绘制线条: 但是当我尝试在代码中执行此操作时(来自MainWindow()),它不起作用: Line line = new Line(); Thickness thickness = new Thickness(101,-11,362,250); line.Margin = thickness; line.Visibility = System.Windows.Visibility.Visible; line.StrokeThickness = 4; line.Stroke = System.Windows.Media.Brushes.Black; line.X1 = 10; line.X2 = 40; line.Y1 = 70; line.Y2 = 70; 我的想法是我可以绘制7行,然后根据不同数字的需要切换其可见性。 我确信这可以通过多种方式完成,但为什么我不能在这样的代码中绘制线条?

调用onclick on按钮将代码放入C#中的不同线程中

我有一个启动相机的按钮。 我想有时候开始拍摄相机,不按下按钮。 代码: private async void StartCamera() { if (!CameraList.HasItems) //——-> CameraList is in the UI { MessageArea.Text = “No cameras found; cannot start processing”; return; } // Clean leading/trailing spaces in API keys. Properties.Settings.Default.FaceAPIKey = Properties.Settings.Default.FaceAPIKey.Trim(); Properties.Settings.Default.EmotionAPIKey = Properties.Settings.Default.EmotionAPIKey.Trim(); Properties.Settings.Default.VisionAPIKey = Properties.Settings.Default.VisionAPIKey.Trim(); // Create API clients. _faceClient = new FaceServiceClient(Properties.Settings.Default.FaceAPIKey); _emotionClient = new EmotionServiceClient(Properties.Settings.Default.EmotionAPIKey); […]

Windows窗体中的线程

我多年来一直在编写ASP.NET Web应用程序,但还没有真正处理大型Windows窗体项目。 我现在需要处理一个,所以我正在寻找关于如何理想地构建大型Windows窗体项目的一些指示。 更具体地说,我想知道如何处理多个线程。 假设您有一个需要一些时间才能完成的过程 – 您不希望ui窗口被冻结且没有响应。 所以逻辑需要在一个单独的线程中移动。 如果此线程访问UI,则会导致exception。 Invoke似乎可以解决这个问题,但看起来非常难看并且阅读起来很麻烦! 那么,实际上,最佳实践是什么? 应该启动什么类型的线程,以及如何在UI和逻辑之间拆分这些线程? 任何示例代码开始?

Windows Universal App适用于我吗? – UI迁移

我有一个控制台应用程序,可以执行一些直接连接到它们的数据库管理。 它适用于MsSqlServer和Oracle(现在)。 您可能知道,使用控制台应用程序效率不高。 所以我想将UI部分移植到桌面应用程序。 我在库中拥有所有核心代码,控制台应用程序只管理用户交互。 我做了一些测试,不能在UWA上使用库。 然后尝试共享库,令我惊讶的是我不能直接使用SqlServer。 UWA是桌面应用的新方式吗? 我不想连接到服务然后连接到数据库,它对用户应用程序有好处,但对我的软件所做的事情没有信心,我需要100%直接连接。 我应该尝试使用WPF(它是否适用于sqlserver连接?)? 的WinForms? 如果他们放弃对WPF或WinForms的支持,就像他们将要使用WebForms一样,该怎么办? 想要西澳大学,因为它看起来非常好,MS让它看起来像是“走的路”。 有任何想法吗? 更新1 所以,有些人说我可以使用可以处理所有任务的web api或中间层,这样我就可以解决UWA的限制问题。 这不是一个坏主意,我也考虑过这一点。 即使我认为我可以只为任务和Web UI提供服务,这样它就可以从任何设备访问。 但更难在私人/公司的工作中部署。 我认为这只是一个“简单”工具的太多架构。 所以,经过一些思考后发现(可能)一些中级答案:我将研究哪些项目可以帮助我与Windows和其他系统进行本机集成。 由于手机和平板电脑可能已经超出我的目标,至少我将针对linux和mac os。 想想他们正在研究的这个新的.Net版本将是OSS和多平台。 去检查它并保持这篇文章更新,万一其他人有兴趣。 更新2 现在我真正考虑中间层,但它会使它更复杂和更长的开发:( 为此,我将需要:我的核心库,Windows服务或某种工作/任务服务,前端可能html5消耗一些webapi。 关于任务/作业服务器的任何建议?

如何使用后台线程中的信息更新WPF窗口?

我正在创建一个wpf应用程序,它在后面执行许多任务,但仍然需要UI响应并显示各种后台任务的状态。 它还可以选择不显示UI,在这种情况下,应该丢弃状态消息而根本不创建主窗体的实例。 我试图删除 StartupUri=”MainWindow.xaml” 来自App.xaml。 然后,在App.xaml.cs中,我有 ` public App() { Startup += new StartupEventHandler(App_Startup); } void App_Startup(object sender, StartupEventArgs e) { // Code which loads application settings is here if (pf.ShowUI) { MainWindow mainWindow = new MainWindow(); mainWindow.Show(); } // The background processes will begin here. }` 如有必要,这将显示主窗体并启动所有后台进程。 这部分有效。 为了从后台向UI发送消息,我实现了一个非常基本的信使: ` internal interface IMessageHandler { […]

使用委托和事件从另一个表单更新表单

我一直忘记这是怎么做的.. 我想从Form2更新主窗体上的UI而不创建窗体的实例。 我记得使用委托/事件并可能以某种方式传递第一个表单的实例,但完全是空白。 帮助我,谢谢。 从Form2向Form1上的listBox1添加一些东西。

WPF平铺控制,如Windows 8开始菜单

那么,有没有人知道模拟Windows 8 Stat Menu Tile Panel的面板或控件? 所有这些function,如SQUAD瓷砖或更大的? 我也看到了堆栈溢出的这个链接,但由于声誉点低,我可以在那里评论“它不工作” 模拟Windows 8开始菜单平铺布局引擎

使用AvalonDock进行动态水平/垂直分割更改

我的界面上有两个区域(使用WPF),我希望将其拆分。 还有一个按钮可以在水平和垂直分割之间切换。 我正在使用AvalonDock。 当我在运行之前更改代码中的Orientation参数时,一切正常。 但是点击此处按钮不会改变。 没有任何事情发生,但是当我尝试拖动仍然存在的分离器时程序崩溃。 private void OnChangeView(object sender, RoutedEventArgs e) { if (LayoutPanel1.Orientation == Orientation.Vertical) { LayoutPanel1.Orientation = Orientation.Horizontal; } else { LayoutPanel1.Orientation = Orientation.Vertical; } } 我调试了它,属性本身也发生了变化。 不知道问题是什么……或者你知道一个更好的方法来实现它,但我可能也需要AvalonDock。

如何在非UI线程上调用Application.Exit

我有一个UI设计问题。 我想在非UI线程上遇到exception时退出应用程序。 基本上,事件是这样的: 主窗体 – >子WinForm的ShowDialog(MainThread) – >启动后台线程(WorkerThread) – >发生exception – >显示ErrorForm(WorkerThread) 当用户单击ErrorForm上的退出按钮时,我想退出整个应用程序。 但是,执行以下调用不起作用。 Invoker.Invoke((Action)(() => { Application.Exit(); }), null); Invoker引用主窗体SynchronizedContext。 但是,由于MainThread仍在等待subWinForm返回其控件,因此它可能无法处理Application.Exit()。 什么是更好的设计来处理后台工作线程抛出的exception?