Tag: 用户界面

在一个线程上创建的C#控件不能作为另一个线程上的控件的父级

我正在运行一个线程,该线程抓取信息并创建标签并显示它,这是我的代码 private void RUN() { Label l = new Label(); l.Location = new Point(12, 10); l.Text = “Some Text”; this.Controls.Add(l); } private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(RUN)); t.Start(); } 有趣的是,我有一个以前的应用程序有一个面板,我曾经使用线程添加控件没有任何问题,但这一个不会让我这样做。

如何在考虑网络和移动应用的情况下实现桌面应用程序开发?

我的任务是制作一个具有’性感’**外观的桌面应用程序。 我打算用WPF来实现这个目标。 其中一个要求是桌面应用程序稍后将扩展为ASP.NET MVC Web应用程序,然后扩展到移动(可能是Android第一)应用程序,同时保持相同的外观和感觉。 **在这种情况下,“性感”意味着滑动菜单,以及一般的现代外观和感觉 考虑到这一点,如果我想重用组件(和/或)样式,在开始桌面UI设计时最好的方法是什么? 例如,在创建桌面应用程序时,我将使用XAML作为UI,但考虑到应该看起来与桌面相同的应用程序的Web版本,我应该/可以使用HTML / CSS吗? 即使这么想也是荒谬的吗?

如何删除WPF标签中文本的边距?

我试图用标签制作一个小虚拟键盘。 以下是我在XAML中的键盘(但只有3个键): 问题在于标签中的文本周围有太多空间,导致键盘比需要的大得多。 如果我手动设置标签的高度和宽度,则(1)不考虑字体的差异,(2)将剪切部分字母而不是顶部和左边距。 还有其他方法可以将这些边距缩小到与文本本身大小相同的范围吗?

异步任务中的C#更改标签文本

以下代码不会更改文本并停止执行任务 private void button1_Click(object sender, EventArgs e) { label1.Text = “Test”; Task.Run(() => MyAsyncMethod()); } public async Task MyAsyncMethod() { label1.Text = “”; //everything from here on will not be executed } 如果您可以与UI一起使用异步,那将非常方便

如何使WPF窗口响应

我正在使用Blend Expression,刚开始使用WPF。 我正在尝试制作一个窗口响应窗口,它可以容纳多个网格,并根据窗口大小重新resize到最小宽度。 它会像: 我的代码到目前为止: 我试过两件事,其中一件是Margin ,另一件是Width和Height使用’对齐’。 不确定哪个会解决我的目的,其次它会响应屏幕尺寸。 我使用*阅读有关动态网格的内容,但这似乎不适用于此。 谢谢,

如何强制用户将建议的条目带入ComboBox?

我希望用户从ComboBox中选择一个值。 必须在用户的文本输入中建议条目。 我是否必须使用事件来强制System.Windows.Forms.ComboBox包含来自其自己的DataSource的值? 示例:必须向用户建议条目…如果我写“CO”,组合应建议“CONGO”和“COLOMBIA”,但用户只能输入其中一个值。 用户不应该引入“COfdfgdfg”或任何随机字符串。 谢谢!

表格之间沟通的最佳方式?

我几乎从不使用(高级或根本没有)图形界面,或者一个带有简单控件的简单forms……但这次我有一些更复杂的东西,而且我对GUI没有多少经验。 我有一个主要forms(未来可能更多),其他子forms也可以打开(并且它们可能有自己的子forms),我想知道在你看来,它们之间的最佳通信方式是什么? 我想把主窗体作为参数传递给子窗体的构造函数,但它似乎不是一个好方法,特别是如果我需要在其他不同的子窗体之间进行通信,而不是提到我必须仔细检查输入,或者做一些方法,但它似乎更像是函数式编程而不是面向对象的编程… 也许我可以: 为全局设置创建静态类(或Properties.Settings)。 缺点:每次更改数据都需要复制到课堂上,我正在寻找一些更舒适和优雅的东西。 使用从Application.OpenForms访问控件的丑陋方式 – 修复了将主窗体作为参数传递的问题。 缺点:不太稳定。 做一些我没有想到的事情。 建议? 缺点:不知道它到底是什么。

如何在winforms上绘制我自己的进度条?

Yoyo专家! 我的Windowsform(不是WPF)上有几个进度条,我想为每个使用不同的颜色。 我怎样才能做到这一点? 我用Google搜索,发现我必须创建自己的控件。 但我不知道如何做到这一点。 任何的想法? 例如progressBar1绿色,progressbar2红色。 编辑:哦,我想解决这个问题,而不删除Application.EnableVisualStyles(); 线,因为它会抬起我的形状:/

调用OpenFileDialog.ShowDialog()时,Windows窗体GUI挂起

我的项目是一个三层架构项目,与后端的WCF服务进行通信。 当后端能够从服务获取数据时,它使用发布 – 订阅通知业务层,而后者通知GUI层。 我使用Visual Studios设计器在我的UI设计中添加了一个OpenFileDialog。 按钮事件处理程序调用ShowDialog消息。 但是,一旦我单击按钮,整个UI就会挂起。 谷歌搜索了一下,我发现使用委托是处理这样的任务的首选方式。 但是,无论是否有代表,问题仍然存在。 目前我的代码如下所示: private void bOpen_Click(object sender, EventArgs e) { Func del = delegate { OpenFileDialog d = new OpenFileDialog(); if (d.ShowDialog() == DialogResult.OK) { return Image.FromFile(d.FileName); } return null; }; Invoke(del); } 我来自Java世界,所以我并不熟悉C#UI编程的复杂性。 我在这里缺少什么?

需要一个非常定制的大型Winforms网格

我即将开发一个Windows PC应用程序(它可以是WinForms或WPF),我主要担心的是我必须解决的UI问题。 基本上,我需要有一个大约50×50的网格,我需要从用户那里获得输入。 这是2500场。 实际上大多数将留空,大约10%将由用户填写。 每个字段可以是空白的,也可以是1到4的数字。我想要简单的输入 – 也许是一个下拉框(因为用键盘键入所有2500个字段没有意义,我希望用户填写使用鼠标的值)。 我在考虑下拉框或者甚至是标签,当你点击它们时会改变价值,但问题是(从我做过的测试中)添加2500种任何类型的控件会使界面非常慢。 我尝试在winForms应用程序中使用tablelayoutpanel,使用suspend / resumeupdate函数,还有doublebuffering,这有点帮助,但它仍然非常慢。 我不愿意去DataGridView路由,因为我需要非常自定义标头,我需要UI来自动更新一些百分比,因为用户更改了字段中的值。 但如果这是我唯一的选择,我不会反对。 我听说WPF可能会更好,因为你可以有很多控件,而且每个控件都没有自己的窗口处理,而且还有虚拟化(不确定实现有多难)。 我愿意接受建议。 我知道有人会建议打破网格,我最终可能会这样做。 无论哪种方式,我想知道在Windows应用程序中使用许多控件的大型网格的最有效方法,就像我要在不破坏网格的情况下开发它一样。 我正在使用VS 2013,在C#,.NET 4.0中开发。 谢谢!