Tag: winforms

我想从Form2控制Form1

所以我基本上希望用户先登录才能使用其他表单。 但是,我的困境是登录框在Form2中,主窗体是Form1。 if ((struseremail.Equals(username)) && (strpasswd.Equals(password))) { MessageBox.Show(“Logged in”); form1.Visible = true; form1.WindowState = FormWindowState.Maximized; } else { MessageBox.Show(“Wow, how did you screw this one up?”); } 但是,Form1在登录后不会显示(因为我将其作为visble = false启动)。有人可以帮忙吗? 编辑: 很棒的回应,但我的问题仍然存在。 我基本上想要加载Form2 First(这很容易我运行Form1并将其设置为隐藏)但是当Form2关闭时,我也想要关闭Form1。 private void Form2_FormClosing(Object sender, FormClosingEventArgs e) { Form1 form1 = new Form1(); form1.Close(); MessageBox.Show(“Closing”); } 这似乎不起作用……

更新背景工人winforms中的标签文本

我正在使用BackGroundWorker类在sqlserver中插入一些值。 我在这里循环插入值。 我正在使用以下代码 public void bw_Convert_DoWork(object sender, DoWorkEventArgs e) { e.Result = e.Argument; for (int i = 0; i < fTable.Rows.Count; i++) { try { SqlCommand cmd = new SqlCommand("INSERT INTO TBL_CDR_ANALYZER (LNG_UPLOAD_ID, DAT_START, LNG_DURATION, INT_DIRECTION, INT_CALL_DATA_TYPE, \n" + "TXT_TARGET_NUMBER, TXT_OTHER_PARTY_NUMBER, TXT_TARGET_IMSI, TXT_TARGET_IMEI, TXT_TARGET_CELL_ID, TXT_ROAMING_NETWORK_COMPANY_NAME) VALUES \n" + "(@UPLOAD_ID, @START_DATE, @DURATION, @DIRECTION, @CALL_TYPE, @TARGET_NUMBER, @OTHER_PARTY_NUMBER, […]

在C#中执行任何其他操作时表单无响应

我有一个表单(使用VS2010在C#中开发)和一个进度条。 这是一种秒表forms,我填写进度条说10secs ….随着时间流逝,进度条相应填充….意味着5secs后,进度条将填充50%等等…. 我使用for循环来执行此操作: – for(int count=0;count<200;count++) { progbar.performstep(); progbar.update(); update(); Thread.Sleep(50); } 我使用了50毫秒的Thread.Sleep,以便进度条顺利更新。 持续1秒,它会逐步递增。 问题是,如果我执行任何其他操作,例如移动此表单或甚至单击桌面上的另一个图标使此表单“无响应”….但它执行操作,并在10秒结束时,它重新获得它的状态并显示弹出,表示进度条已满10秒。 感谢您的帮助和抱歉使用这种复杂的语言。 此致,Swanand 更新 :我在下面的答案的帮助下解决了这个问题….我要知道的一个常见错误是忘记了“ Applications.DoEvents() ”以及“ update() ”….如果你输入这一行,那里获得“被绞死”的机会较少!

“X”类型的对象无法转换为“X”类型的对象

(不敢相信这还没有被问到,但我找不到复制品) 在包含大量项目的Visual Studio中,当我第一次打开解决方案时,我有时会收到警告Object of type “X” cannot be converted to object of type “X” 。 一般来说,重建似乎会让它消失,但有谁知道这是由什么引起的,以及如何避免它? 更新我在某处读到删除所有resx文件并重建可以提供帮助。 我不假思索地尝试过这个。 不是个好主意……

将子控件的click事件传递给父控件

我有一个Windows窗体,有一个窗格,其中包含另一个派生自Windows窗体的类。 它包含在窗格中作为控件。 它本身包含两个按钮。 我希望子控件的事件一直传递到父窗口。 例如,窗格中的子窗口有一个Cancel按钮,该按钮应该关闭它。 我想要父控件,也就是关闭主窗口,但是如何拦截子控件的按钮单击事件? 我可以修改子控件,但只有在没有其他方法以正确的方式实现这一点时,我宁愿避免它。

没有表单的ActiveX控件

我们需要使用第三方ActiveX控件。 唯一的问题是,我们软件中的图层是业务层,无法访问窗口或表单。 它还运行在不是STA的单独线程上(并且应该可以在任何线程中工作)。 我们使用此解决方法使其工作,而不是将UI与业务逻辑分开。 Thread thread = new Thread((ThreadStart) delegate { _myActiveX = new MyActiveXType(); _myActiveX.CreateControl(); //more initialize work Application.Run(); }); thread.SetApartmentState(ApartmentState.STA); thread.IsBackground = true; thread.Start(); 然后,只要我们需要引用控件,我们就会调用_myActiveX.BeginInvoke()或Invoke() 。 在处理这个类(退出我们的应用程序)时,我们处理控件并中止线程。 我的问题是,这有什么问题吗? 有没有更好的方法来处理这个? 是否有更好的内置方法可以在未知的multithreading环境中使用ActiveX控件? 我们试图以包装控件的方式编写我们的类,但是可以在任何线程中工作。 更新:作为一个答案建议,我们真的宁愿使用标准的COM对象,而根本不使用控件。 我们的问题是我们会在我们调用COM对象的第一个方法或属性上得到错误“(来自HRESULT的exception:0x8000FFFF(E_UNEXPECTED)”。这是一个非常一般的错误,我们在使用ActiveX时没有得到这个错误, 有任何想法吗? 更新:我们的ocx是“CX25.ocx”,使用tlbimp.exe我们得到CX25Lib.dll。 使用aximp.exe,我们得到AxCX25Lib.dll和CX25Lib.dll。 在任何一种情况下CX25Lib.dll都不起作用。 AxCX25Lib.dll可以使用。

C#从列表框拖放到树视图

我有一个带有列表框和树视图的winform。 一旦我的列表框中填充了项目,我想从列表框中拖动它们(多个或单个)并将它们放在树视图中的节点中。 如果有人在C#中有一个很好的例子。

在Windows窗体应用程序中闪烁

我有一个应用程序,它有很多控件。 并且它有大量的闪烁,特别是在启动时。 我将此修复程序应用于它。 protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED return cp; } } 这很有效 – 闪烁的数量减少了令人难以置信的数量。 但是,副作用是当我将鼠标移动或单击它们时,窗口右上角的最小化,最大化和关闭按钮不会生成动画(它们仍然有效)。 这给应用程序带来了一种感觉。 如何在保留最大化,最小化和关闭按钮的可用性的同时保留WS_EX_COMPOSITED? 这种情况发生在Windows XP上。 正如@fallenidol所指出的,这不是Windows 7上的问题。

允许在.NET TreeView中进行多选

我陷入了.NET 2.0 Windows窗体。 它看起来不像标准TreeView控件中存在选择多个节点的能力。 我正在尝试为上下文菜单选择执行此操作。 因此,复选框不是可接受的UI范例。 提供非常必要的function的最佳方法是什么?

将自定义对象列表显示为PropertiesGrid中的下拉列表

我想拿一个对象,让我们说这个对象: public class BenchmarkList { public string ListName { get; set; } public IList Benchmarks { get; set; } } 并让该对象将其ListName显示为PropertiesGrid的“name”部分(“Benchmark”将是好的),并且对于PropertyGrid的“value”部分,要有一个IList of Benchmarks的下拉列表: 这是Benchmark对象 public class Benchmark { public int ID {get; set;} public string Name { get; set; } public Type Type { get; set; } } 我希望下拉列表显示基准的Name属性,以便用户可以看到。 这是一个视觉示例: 所以,基本上,我正在尝试将Benchmark对象的集合放入下拉列表中,并且这些对象应该将其Name属性显示为下拉列表中的值。 我已经阅读了有关使用PropertiesGrid的其他文章,包括THIS和THIS ,但它们比我想做的更复杂。 我经常处理服务器端的东西,不通过WebForms或WinForms处理UI,所以这个PropertiesGrid真的带我去旅行… 我知道我的解决方案在于实现“ICustomTypeDescriptor”,这将允许我告诉PropertiesGrid它应该显示哪些值,而不管我想要绑定到下拉列表中的对象的属性,但我是只是不确定如何或在何处实施它。 […]