Tag: winforms

单击动态usercontrol中的控件时,单击事件未触发

我的usercontrols中有不同的控件。 并在我的表单中动态加载用户控件 UserControl2 usercontrol = new UserControl2(); usercontrol.Tag = i; usercontrol.Click += usercontrol_Click; flowLayoutPanel1.Controls.Add(usercontrol); private void usercontrol_Click(object sender, EventArgs e) { // handle event } 单击usercontrol中的控件时,不会触发单击事件。 它只在我点击usercontrol的空白区域时触发。

立即显示启动画面

我们正在处理WinForm应用程序的慢启动(它是一个大型应用程序并具有许多控制程序集)。 控制组件是DevComponents。 应用Ngen来防止jit编译,但加载时间略有下降。 该应用程序具有启动画面,但它仅在应用程序启动后的12秒内出现。 是否有任何方法可以立即显示启动画面? 我们目前的建议是使用启动画面创建一个轻量级应用程序,在单独的进程中运行主应用程序,并在完成主应用程序初始化时关闭轻量级应用程序。

Winforms – MVP模式:使用静态ApplicationController来协调应用程序?

背景 我正在构建一个双层C#.net应用程序: 第1层:使用MVP(Model-View-Presenter)设计模式Winforms客户端应用程序。 第2层:位于Entity Framework和SQL Server之上的WebAPI RESTful服务。 目前,我对Winforms客户端应用程序的整体架构有疑问。 我是编程新手(大约一年),但我在这个应用程序上取得了很好的进展。 我想退后一步,重新评估我目前的做法,检查我是否正朝着正确的方向前进。 应用领域 Winforms应用程序是一个相当简单的安全人员跟踪应用程序。 主视图(表单)是应用程序的焦点,并且具有将内容分组为function区域的不同部分(例如,用于跟踪人员调度的部分,用于跟踪分配到何处的人的部分等)。 应用程序侧面的菜单启动辅助视图(例如历史记录,统计信息,联系人等)。 这个想法是安全办公室可以使用该应用程序来组织日常操作,然后在数据库中保留所有内容的详细历史记录,以便将来进行报告。 技术细节 如前所述,Winforms客户端是使用MVP模式(被动视图)构建的,重点是尽可能多地使用dependency injection(通过SimpleInjector IoC容器)。 每个视图(表单)都与一个演示者配对。 视图实现接口,允许演示者控制视图(无论具体实现如何)。 该视图会引发演示者订阅的事件。 目前,不允许演示者直接与另一位演示者通信。 应用程序控制器用于协调应用程序。 这是我的应用程序架构的领域,我是最不明智的(因此是post标题)。 应用程序控制器目前用于: 打开新视图(表单)并管理打开的表单。 通过事件聚合器促进应用程序组件之间的通信。 一位演示者发布一个事件,任何数量的演示者都可以订阅该事件。 主机会话信息(即安全上下文/登录,配置数据等) 在应用程序启动时,IoC容器已注册到应用程序控制器中。 例如,这允许应用程序控制器从容器创建演示者,然后由容器自动处理所有后续依赖项(视图,服务等)。 题 为了使所有演示者都可以访问Application Controller,我将控制器创建为静态类。 public static class ApplicationController { private static Session _session; private static INavigationWorkflow _workflow; private static EventAggregator _aggregator; #region Registrations public […]

从儿童表格访问主表格

我有一个简单的问题:我在win-forms / c#中有一个主窗体。 它有一个绑定到数据库的列表框。 单击按钮时,将创建新表单。 当我单击子窗体上的一个按钮时,我想调用主窗体中存在的方法,它更新列表框,或者当子窗体关闭时调用该函数。 这可能吗??

从控制台的Windows窗体

我想使用C#从控制台生成Windows窗体。 大致类似于Linux中的display ,并修改其内容等。这可能吗?

如何将子项添加到ListView?

我正在尝试使用子项目工作的Listview获得最简单的示例。 但是这段代码: private void button1_Click(object sender, EventArgs e) { listView1.Groups.Add(new ListViewGroup(“Kannst du mich sehen?”, HorizontalAlignment.Left)); string[] strArr = new string[4] { “uno”, “dos”, “twa”, “quad” }; for (int i = 0; i < strArr.Length; i++) { ListViewItem lvi = new ListViewItem(strArr[i]); listView1.Items.Add(lvi); lvi.SubItems.Add("Ciao, Baby!"); listView1.Items[i].Group = listView1.Groups[0]; } } …不显示子项目(“Ciao,Baby!”)。 表明: Kannst du mich sehen? […]

Windows窗体应用程序中的任务并行库代码冻结 – 作为Windows控制台应用程序正常工作

这个问题是我曾问过的上一个问题的后续问题: 如何使用C#并行执行多个“Ping” 我能够获得接受的答案(Windows控制台应用程序),但是当我尝试在Windows窗体应用程序中运行代码时,以下代码将冻结在包含Task.WaitAll(pingTasks.ToArray()) 。 这是我试图运行的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net.NetworkInformation; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { List addresses = new List(); for (Int32 i […]

如何判断用户是否使用bindingsource修改了数据?

我有一个DataGridView绑定到绑定到List的绑定源。 用户单击转到带有文本框等的表单的行。文本框是数据绑定的,如下所示: if (txtID.DataBindings.Count == 0) txtID.DataBindings.Add(“Text”, bindingSource, “Title”); 我希望能够检测到用户在单击关闭按钮时是否修改了控件中的任何数据,因此我可以提示他们说“您有未保存的工作。是否要保存?” 如何在绑定源上检测到这一点? 更新:我已经知道我可以使用bindingSource.EndEdit()将更改推送到列表中的项目。 在我的项目中,我可以说,如果Dirty抛出一个Messagebox但是如果他们点击“No”来保存信息,则CancelEdit不起作用。

删除循环中的控件

昨天我写了一段代码来删除满足特定条件的表单中的所有控件。 写得天真,这就是我想出来的。 for (int i = 0; i < this.Controls.Count; ++i) { if (this.Controls[i].Name.Length == 2) { this.Controls.Remove(this.Controls[i); } } 但事实上,代码是错误的。 然后我将其更改为: foreach (Control ctr in this.pbBoardImage.Controls) { if (ctr.Length == 2) { this.Controls.Remove(ctr); } } 但它仍然不正确。 我知道正确的方法是: for (int i = this.Controls.Count – 1; i >= 0; i–) { if (this.Controls[i].Name.Length == 2) { […]

为什么第二个for循环总是比第一个循环执行得快?

我试图弄清楚for循环是否比foreach循环快,并且正在使用System.Diagnostics类来为任务计时。 在运行测试时,我注意到我先放入的循环总是比最后一个慢。 有人可以告诉我为什么会这样吗? 我的代码如下: using System; using System.Diagnostics; namespace cool { class Program { static void Main(string[] args) { int[] x = new int[] { 3, 6, 9, 12 }; int[] y = new int[] { 3, 6, 9, 12 }; DateTime startTime = DateTime.Now; for (int i = 0; i < 4; i++) { […]