Tag: user interface

如何使用C#中的combobox中的差异选项创建要显示和隐藏的动态面板?

我想创建一个动态的GUI,这意味着GUI将根据用户在combobox上做出的选择而改变。 例如,如果combobox由{英语,西class牙语,法语}组成,则combobox底部的面板将根据选择更改其描述语言。 要做到这一点,我相信我必须做一些像清除面板然后重绘面板,但我不知道如何。 有人能告诉我如何在Visual Studio 2005 C#的细节上实现这一点吗? 先感谢您。

来自UI线程中的Async组件的Fire事件

我正在.Net 2.0中构建一个非可视组件。 该组件使用异步套接字(BeginReceive,EndReceive等)。 异步回调在运行时创建的工作线程的上下文中调用。 组件用户不必担心multithreading(这是主要目标,我想要的) 组件用户可以在任何线程中创建我的非可视组件(UI线程只是简单应用程序的通用线程。更严重的应用程序可以在任意工作线程中创建组件)。 组件触发事件,例如“SessionConnected”或“DataAvailable”。 问题:由于Async Callbacks和其中引发的事件,事件处理程序在工作线程上下文中执行。 我想使用一个中间层,它强制事件处理程序在首先创建组件的线程的上下文中执行。 示例代码(从exception处理等中删除…) /// /// Occurs when the connection is ended /// /// The IAsyncResult to read the information from private void EndConnect(IAsyncResult ar) { // pass connection status with event this.Socket.EndConnect(ar); this.Stream = new NetworkStream(this.Socket); // — FIRE CONNECTED EVENT HERE — // Setup Receive Callback […]

C#GUI入门教程

来自Access,我完全不熟悉构建GUI甚至程序。 对于C#应用程序构建,有人可以指向我的入门或教程,向我解释如何构建GUI,以及框架,窗口小部件,Winforms,WPF以及其他所有内容以及它们如何组合在一起以产生可用的程序? 谢谢。

C#表单控件移动

反正有控制你可以移动表格的地方吗? 因此,如果我移动一个表格,它只能在垂直轴上移动,当我尝试水平移动时,没有任何反应。 我不想要像changechanged或move事件那样的bug实现并将其弹回内联。 我没有办法使用类似WndProc覆盖的东西,但在搜索了一段时间后,我找不到任何东西。 请帮忙

MultiThreading COMObject和UI线程(C#)

这是我在这里的第一篇文章,实际上我通常用你可以在这里找到的很棒的post数据库来解决我的所有问题。 但我现在卡住了: 我正在研究一个跟随MVVM的项目,包括一个COM对象。 正如我在研究期间所读到的那样,我理解COM对象只能从创建它的线程中访问。 我的COM对象实现以下接口 interface IComUpdate { void Update(); } 所以当我创建我的COM对象时,每次有更新(我不知道什么时候,它是随机的)时,COM服务器将调用我实现的COM对象类的Update() 。 我的目标是创建一个不同的线程,命名一个COM对象线程,其中COM对象独立于我的UI线程存在,所以每次有更新时,我都在与UI线程不同的线程中处理它。 实际上它正在工作: 在我的ViewModel的开头,我创建了一个特定对象的集合。 这个对象,我们称之为ModelObj ,是模型的一部分,它定义了一个静态构造函数,除了初始化一些变量之外,应用程序还为COM对象创建并启动一个新线程: Thread t = new System.Threading.Thread(() => { System.Threading.Thread.CurrentThread.Name = “Thread of COM Object”; IComUpdate myComObj; myComObj = (IComUpdate)Activator.CreateInstance(blabla); Application.Run(); }); t.SetApartmentState(ApartmentState.STA); t.Start(); 它实际上工作得很好,在我的COM对象的Update()实现中,我实际上看到该线程是刚创建的线程而不是UI线程。 现在的问题是:我创建的ModelObj实现了INotifyPropertyChanged接口。 我的想法如下:每次COM对象收到更新时,我处理来自COM对象线程的数据,并从此线程更新我的ModelObj实例的某些属性,因此这些属性将引发我的ModelObj的属性更改和UI线程将更新用户界面。 如果UI更新花费太多时间,我可能会错过一些Update()出现在屏幕上,但COM对象会将它们记录在我的ModelObj实例中,因此UI捕获所有更新并不是很重要,我只是没有希望COM对象必须等待更新UI才能再次调用。 我阅读了很多post,然后认为我的RaisePropertyChanged(“property”)会失败。 实际上甚至在COM对象的线程中, RaisePropertyChanged成功执行,因此跟踪我的代码,我看到它切换到我的ViewModel程序集 // Here I’m still in the thread of […]

使用async await仍会冻结GUI

我想在单独的线程中处理长时间运行的操作,并使用async / await模式将控制返回到GUI线程,如下所示: private async void Button_Click(object sender, RoutedEventArgs e) { await Test(); txtResult.Text = “Done!”; } private Task Test() { Thread.Sleep(3000); return Task.FromResult(0); } 问题是,它无论如何都会冻结GUI 3秒钟(在3秒后显示Done!之前它会变得无法响应)。 我究竟做错了什么? 编辑:我试图取代以下逻辑: private void Button_Click(object sender, RoutedEventArgs e) { var thread = new Thread(() => Test(Callback)); thread.Start(); } private void Callback() { Dispatcher.Invoke(() => txtResult.Text = “Done!”); } […]

什么是用户界面设计模式中的模型,如MVC,MVP,MVVM?

我已经看过许多使用模型 – 视图UI设计模式的教程和示例,并且它们都以非常不同的方式实现它们,尤其是模型部分。 在一些示例中,Model是某些服务层中某些数据访问层(如存储库模式)中的数据(某些数据库的实际对象表示)… 如果有人告诉你他在他的应用程序中使用MV *模式,它会告诉你有关应用程序设计的内容吗? 它是否在对象图中维护数据库的内存表示,并将其用作数据源或某些数据访问层来查询数据库… 您将选择什么作为面向数据的智能客户端应用程序的模型,主要包含带有表的选项卡页面?

是否有System.Drawing.Color中所有颜色的在线示例?

任何人都可以指向一个参考图表,其中包含System.Drawing.Color中表示的所有颜色的样本?

如何计算滚动条拇指的大小?

我正在为C#和XNA中的游戏制作自己的自定义UI系统,滚动条有一个小问题。 我不知道计算滚动条的拇指大小的公式是什么。 所以假设我有一个200×200像素的面板。 和600×600像素的图像。 如何根据图像大小计算滚动条的拇指大小?

使用不带Invoke的MethodInvoker

我现在正在编写GUI应用程序一段时间,我总是使用一个方法是使用MethodInvoker + lambda函数来进行跨线程访问。 从示例中我发现我总是看到这样的东西: 版本1 if (InvokeRequired) { Invoke(new MethodInvoker(() => { Label1.Text = “Foobar”; }); } else { Label1.Text = “Foobar”; } 然而,这会导致代码重复 – >对我来说是主要的坏人。 那有什么不对呢? 版本2 MethodInvoker updateText = new MethodInvoker(() => { Label1.Text = “Foobar”; }); if (InvokeRequired) { Invoke(updateText); } else { updateText(); } 现在我将function捆绑在一个变量中,并在适当时使用Invoke或函数指针调用它。 版本2的性能更差吗? 或者我使用匿名函数是不好的做法?