当在独立的线程上启动事件处理类时,GUI会更新吗?
我们有一个DLL,可以监视状态变化,并从单独购买的产品中寻找事件.实际上,这是西门子的屏幕电池API,对于那些可能知道这是什么的人.我使用c#.net 3.5作为平台. 此API需要很长时间才能初始化,因此我们要使用单独的线程来初始化它.当前,我们在名为ScreenPop的类中具有功能.该类监视2个事件,一个状态更改事件和一个屏幕流行事件(数据告诉我们客户是谁在打电话). 当前实施的方式不起作用,或者至少无法可靠地工作.在ScreenPop类中,有一个初始化方法,其中所有长期运行的启动代码都已放置.这是从班级的构造函数中称为: public ScreenPop( string Address, int Ext, CallbackStatusType pStatusFunc, CallbackScreenPopType pPopFunc ) { CallbackStatus = pStatusFunc; CallbackPopup = pPo
4 2024-04-26
编程技术问答社区
用c#封锁特定的键盘组合键
我需要在Windows应用程序中使用C#阻止某些键盘快捷键. 所有关键组合将在配置文件中指定. 喜欢: alt + f4 win + e win + l app.config中的配置应该是什么?请帮助我提供一些示例代码或示例. 解决方案 这不是应用程序的config可以完成的系统.您将需要使用诸如Steadystate之类的工具. http://en.wikipedia.org/wiki/windows_steadystate_steadystate
2 2024-04-26
编程技术问答社区
dataGridView图像列链接到文件
我正在使用DataGridView上的图像列: 如所附图片所示,当我单击"浏览"时,我可以从对话框窗口中选择一个文件. 我想要什么... 是为了使"文件"图像列上的图像链接到所选文件(用户单击图像时,要打开文件). 我不知道如何实现这一目标.有人可以给我一个方向吗? 解决方案 首先,您可以创建自己的课程,并将此类属性放入文件路径 我创建了示例: public class MyClass { public string Name{get;set;} public string FilePath{ get; set; }// Here i put The path and it will not appear in the Grid will just show the first item } 在datagrid中,有一个称为 selectionChanged 的事件您可以在此处添加此代码 if (
14 2024-04-26
编程技术问答社区
Task.WhenAll(Task.Run(async method))与Task.WhenAll(async method)之间的区别
我一直在试图弄清楚为什么UI从ViewModel方法中阻止,并意识到代码的这一部分: await Task.WhenAll(getOutput1(), getOutput2()); 是问题所在.我设法通过使用: 来解除UI的阻止. await Task.WhenAll(Task.Run(() => getOutput1()), Task.Run(() => getOutput2())); getOutput1()和getOutput2()均为async,Task在ViewModel中返回类型,并且从视图中调用代码. 呼叫任务有什么区别. 解决方案 呼叫任务有什么区别. 直接调用该方法将在UI线程上调用它们.从Task.Run中调用它们会在线程池线程上调用它们. 结论:getOutput1和/或getOutput2实际上不是异步. (一种方法完全有可能返回Task - 因此出现异步 - 但实际上只是同步阻止). 其他解决方案 如果方法是纯粹的
10 2024-04-26
编程技术问答社区
在C#中,即使在登录屏幕上也能运行的gui/程序。
我想制作一个程序,该程序在用户甚至登录之前运行,并且GUI在登录屏幕中显示: 解决方案 登录屏幕实际上是一个称为" Secure Desktop" .这意味着它在不与普通用户桌面相互作用的其他桌面中运行(在运行GUI应用程序的情况下). 在另一台桌面中启动进程的唯一方法是调用 CreateProcess() winapi函数,在 STARTUPINFO STARTUPINFO 结构的lpDesktop字段. 但是,根据限制的帐户的,包括本地系统帐户.不要携带这些帐户在其令牌中的任何一个帐户中的任何一个,因此因此无法访问winlogon桌面或在Winlogon桌面处于活动状态时转到其他桌面." .这意味着您很可能无法在Winlogon桌面上运行GUI应用程序. 尽管我建议您阅读一些有关其他解决方案 可以在登录屏幕之前启动Windows应用程序.有几种方法可以做到这一点,但是在许多情况下,最实用的解决方案是修改登录屏幕本身是另一回事,并且出于安全原因几乎是不可能的.请
6 2024-04-26
编程技术问答社区
Windows通用应用程序是否适合我?--UI迁移
我有一个控制台应用程序,可以执行一些数据库管理的操作,直接连接到它们.它适用于MSSQLServer和Oracle(目前). 您可能知道,使用控制台应用程序并非如此富有成效.因此,我想将UI部分移植到桌面应用程序中.我在库中有所有核心代码,控制台应用程序只是管理用户交互. 我进行了一些测试,无法在UWA上使用库.然后尝试了共享库,令我惊讶的是,我无法直接使用SQLServer. UWA是桌面应用程序的新方法吗?我不想连接到服务,然后连接到数据库,这对用户应用程序有好处,但是对我的软件所做的内容不自信,我需要100%直接连接. 我应该尝试使用WPF(它可以与SQLServer连接一起使用吗?)? Winforms?如果他们放弃对WPF或Winforms(例如使用WebForms)的支持? 想要UWA,因为它看起来非常好,MS使它看起来像是"去的方式". 有什么想法吗? 更新1 所以,有人说我可以使用可以处理所有任务的Web API或中间层,这
0 2024-04-26
编程技术问答社区
如何用用户界面映射对象
我有以下类实现(不完整,只是为了给出一个想法) public class MySwitch{ Command command = Command.Red; public Command GetNext() { command = GetNext(command); // circular enum values return command; } } public enum Command { Red =0, Blue=1, Green=2} public class LED { public void Glow(Command command){ this.setColor(ColorForm(command)); this.Glow(); } } public class Commander { publi
2 2024-04-26
编程技术问答社区
添加到C++应用程序的C#图形用户界面
我想添加我的C ++应用程序A C#.NET GUI. 我的C ++应用程序非常简单,但是我有一些指针和参考. 最好的方法C#将识别此指针和参考? 解决方案 有几种方法,这里有一些,这取决于您的口味和您的项目. a)使用com Interop,如果您的C ++项目是用com编写的. b)使用com Interop,您可以将com包装器写入您的C ++应用程序,然后从C#. 使用它 c)使用C ++/CLI,也就是说,将您的项目转换为托管的C ++应用程序,并在使用C ++代码的C ++中创建托管类. 您还可以编写加载C ++ DLL或静态库的托管C ++ DLL. d)使用P调用C调用,从与C ++类一起使用的C ++代码中导出DLL C函数,使用[Dllimport]属性从C#调用C函数. 您可以使用类型INTPTR,并且可以使用更好,更安全的安全性来表达指示和参考. 所有的方式都有美好的事物和缺点,但是每个列出的tehcnique都需要一个"
2 2024-04-26
编程技术问答社区
如何在我的Windows窗体应用程序的FlowlayoutPanel中通过事件处理删除一个特定的面板?
对于我的C#Windows表单应用程序,我创建了一个包含多个面板的Flowlayoutpanel.在面板内部,我为每个面板都有一个"清除"按钮. 如何编写"清除"按钮的代码的事件处理程序,以便一旦我单击"按钮",该面板将从Flowlayoutpanel中"删除". 这是将面板添加到Flowlayoutpanel的代码的简短部分. nFlowPanel.Controls.Add(createNotificationPanel()); nFlowPanel.Controls.Add(createNotificationPanel()); nFlowPanel.Controls.Add(createNotificationPanel()); nFlowPanel.Controls.Add(createNotificationPanelImpt()); nFlowPanel.Controls.Add
2 2024-04-26
编程技术问答社区
如何用后台线程的信息更新一个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 mainWind
2 2024-04-26
编程技术问答社区
C#Windows表单 - 带有picturebox的Mousedownevent
我想构建一个应用程序,以可视化搜索算法(例如DFS,BFS). 我正在使用.cs文件,而不是XAML或XML. 因此,我制作了一个50x50摄影框的矩阵,每个图像框都有自己的矩阵索引,并且位于GUI窗口上. 所以这是我到目前为止的地图. 我要实现的是,每次遇到Mousedownevent时,我都希望选择特定的picturebox,并更改其颜色. 但是我不知道该怎么做. 我有我的初始化代码: private void initBoard() { m_VisualizerPictureBox = new UpgradedPictureBox[m_BoardHeight, m_BoardWidth]; int left = 0, top = (Top / 2 - m_BoardHeight); for (int i = 0; i
10 2024-04-26
编程技术问答社区
在c#中,当一个变量被定义在事件处理程序中时,如何在事件处理程序之外访问该变量?
以下是我在C#Windows表单应用程序中的一些代码. 它分配了一个随机整数来处理.如何访问句柄的新值,以便在此按钮事件之外的其他函数调用可以使用它,因为C#中没有全局变量? 我尝试使用一种方法,但是当我在按钮事件之外调用它时,它仍然无法识别句柄. 另外,我将使用什么来使我的GUI在按下此按钮之前无法使用其他某些控件? ? private void button1_Click(object sender, EventArgs e) { Int handle = 0; random(ref handle); } 解决方案 public class MyClass { private int handle; private void button1_Click(object sender, EventArgs e) {
2 2024-04-26
编程技术问答社区
是否有更好的方法来处理这些控件,FlowLayoutPanel似乎是缺乏的。
目前,我正在使用FlowLayoutPanel显示我的自定义控件,到目前为止,它运行良好,但是当我想更改每个用户请求的控件的布局时,现在似乎缺乏.我一直在尝试找到一种方法来更改WrapContents的WrapContents属性,以重新涂上使用新属性的面板的布局,但却保持不足. 所以我想知道是否有完全不同的解决方案. 我有两种类型的控件,我想向用户,横幅和指标显示.对于每个横幅,都有24-48个指标(它们代表电板).我想通过两种方式向用户显示这些控件.首先在一个长列表中(FlowLayoutPanel在WrapContents = false中表现出色),第二个列表中的第二个列表,每个横幅(因此每列将由其下方指标的横幅领导.) ) 下面是FlowLayoutPanel在此任务中的表现.对于一个长列表的第一个方法,它很简单,只需设置WrapContents = false,一切都会在一个不错的长列表中排列.我遇到的问题是第二种方法.更具体地说,让FlowLayoutP
12 2024-04-26
编程技术问答社区
Stetic GUI Designer移至Glade for Gtk#3
我目前在AudioBackend绑定我的应用程序.由于我想使用Gstreamer,因此我发现,我需要使用GTK#3,因为Gstreamer-sharp需要这.由于我目前正在使用Monodeveloping(使用Stettic进行GUI设计的Monodeveloping),因此我想问一下,朝GTK#3的最佳方法是什么.我知道,它将.UI文件用于GUI定义,可以通过GLADE生成(我也尝试使用GLADE进行一些尝试).但是我的应用程序有4个带有大量代码的窗口,那么我如何轻松地将其运输到GTK#3?有人已经这样做了吗? 问候 sven 解决方案 GTKBuilder适用于GTK2和GTK3,Smuxi最终将走这条路线,并将GTKBuilder转换为GTKBuilder从Stettic转换为GTK2. . 可以在此处找到转换现有stetic UI的工具: https://github.com/xdarkice/stetic2ui 其他解决方案 smuxi 也是一个用St
4 2024-04-26
编程技术问答社区
OnPointerEnter没有被调用
我试图在凝视按钮时为其动画.我有以下代码,其中我从一个领域进行了播放以找到它命中的按钮. var eventDataCurrentPosition = new PointerEventData(EventSystem.current); eventDataCurrentPosition.position = screenPosition; var results = new List(); EventSystem.current.RaycastAll(eventDataCurrentPosition, results); foreach (var result in results) { Debug.Log(result.gameObject.name); } 为了对按钮进行动画操作,我将以下代码添加到该按钮.不幸的是,OnPointerEnter或````onPointerexit''从未被调用. [Re
0 2024-04-26
编程技术问答社区
从控件中删除焦点框框
我有一个具有各种控件的WPF应用程序.当我在使用选项卡之间移动控件之间时,我可以看到焦点框架框: 有什么方法可以隐藏此框架,因此看不到? WPF解决方案是可取的,但Win32方法也可以接受. 解决方案 尝试此 FocusVisualStyle="{x:Null}" 复选框示例
0 2024-04-26
编程技术问答社区
WPF:如何同步异步加载的列表视图
我对加载资源异步和将所选元素保持在正确的加载资源之间的融合有一个疑问.为了获得价格,我有一个带有用户的ListView,一个面板和他的个人资料.如果我选择该用户,则将用户从Web服务加载,此后他的数据显示在该配置文件面板中.加载用户可能是一个非常昂贵的操作(时间),因此我尝试了将加载异步制成以防止阻止整个UI-Thread.我在itemchange-event中写了类似的东西 - > ItemChangeEvent(){ Task.Factory.StartNew(()=>{ .. load profile from Server this.Dispatcher.Invoke(.. some UI changes); }); } 现在有时会发生,我在listView中选择的用户不是配置文件中显示的用户.我的猜测是,在"正确"的用户攻击任务完成后,任何任务都会延迟并推动其内容.那么如何实现加载是异步而又与当前选择的项目合成的? 解决方案
4 2024-04-26
编程技术问答社区
在WebForm中动态添加的控件的事件没有发生
我在我的C#Web表单上具有一个用户控件.由另一个ActiveX控制制成的控制.用户控件正在动态添加到表单中.我为用户控件的每个动态添加实例添加了双击事件.但是,双击甚至没有被触发.以下是我的代码 int a = 0; int b = 0; int i, j; int[,] Matrica; Matrica = new int[n, m]; for (i = 0; i
0 2024-04-26
编程技术问答社区