Tag: winforms

INotifyPropertyChanged导致跨线程错误

这是我的观点: 我有一个绑定到BindingList的GridControl。 起初我正在做的是创建一个工作线程并直接访问BindingList,但这是一个“检测到跨线程操作”,所以我按照这里的指南: http://www.devexpress.com/Support/Center/p/AK2981.aspx 通过将原始BindingList克隆到工作线程并更改那个,我得到了预期的效果。 但是,我最近将INotifyPropertyChanged实现到了绑定到BindingList的对象中,然后我又开始收到错误。 我的猜测是GridView仍在从对象中侦听INotifyPropertyChanged。 我怎样才能解决这个问题? 我的课: public class Proxy : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string name) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) { handler(this, new PropertyChangedEventArgs(name)); } }

需要一个非常定制的大型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中开发。 谢谢!

使用ExitWindowsEx时,注销可以正常工作,但是不能执行shutdown和restart

当我调用logoff时,它可以工作。 但是关机和重启不起作用。 一切看起来都不错 。 我查看了SO上的其他示例以及其他地方和代码在大多数地方看起来非常统一。 所以我认为它可能不是代码。 我正在以管理员身份运行,我在没有强制标志的情况下尝试了它。 public void ShutdownComputer(ShutdownType type, bool force) { switch (type) { case ShutdownType.Shutdown: ExitWindowsEx(ExitWindows.ShutDown | (force ? ExitWindows.Force : ExitWindows.ForceIfHung), ShutdownReason.MajorOther | ShutdownReason.MinorOther | ShutdownReason.FlagPlanned); break; case ShutdownType.Restart: ExitWindowsEx(ExitWindows.Reboot | (force ? ExitWindows.Force : ExitWindows.ForceIfHung), ShutdownReason.MajorOther | ShutdownReason.MinorOther | ShutdownReason.FlagPlanned); break; case ShutdownType.Logoff: ExitWindowsEx(ExitWindows.LogOff | (force ? ExitWindows.Force : […]

如何管理水晶报表中的页面大小和边距?

我是水晶报告的新手,并使用.Net(WinForm / Visual Studio 2010)的水晶报告。 我在想如何在报告中设置页面大小以及顶部,底部,左侧和右侧边距。 我试图看看选项,但无法得到它。 请指导我。

跨线程操作在Windows窗体中无效

任何人都可以帮助我,我有一个问题我正在尝试通过线程池让这个代码在后台工作,但我似乎无法让它工作,我一直得到这个错误: Cross-thread operation not valid: Control ‘ListBox3’ accessed from a thread other than the thread it was created on. 这是我正在使用的代码: private void DoWork(object o) { var list = ListBox3; var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory); using (var response = (FtpWebResponse)request.GetResponse()) { using (var stream = response.GetResponseStream()) { using (var reader = new StreamReader(stream, true)) { while […]

带有自定义边框和圆边的C#表单

我正在使用此代码来创建带有圆边的表单(FormBorderStyle = none): [DllImport(“Gdi32.dll”, EntryPoint = “CreateRoundRectRgn”)] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, // x-coordinate of upper-left corner int nTopRect, // y-coordinate of upper-left corner int nRightRect, // x-coordinate of lower-right corner int nBottomRect, // y-coordinate of lower-right corner int nWidthEllipse, // height of ellipse int nHeightEllipse // width of ellipse ); public […]

如何检测应用程序何时失去焦点?

我在c#中创建了一个usercontrol,如果切换到另一个程序,则不会触发Leave和LostFocus。 如何检测应用程序是否失去焦点?

数据绑定是否对隐形控制起作用?

这是winforms的.net问题,而不是asp.net。 我有一个带有几个标签的窗体。 我在加载表单时设置所有控件的数据绑定。 但我注意到第二个选项卡上的控件的数据绑定不起作用。 这些绑定仅在加载表单和选择第二个选项卡时起作用。 这给我带来了怀疑:数据绑定仅在绑定控件可见时才起作用。 任何人都可以告诉我这是否属实? 测试这个并不难,但我想知道一些确认。 谢谢

从Form1作为父级的异步线程调用MessageBox

单击form1上的button1后,程序正在检查新版本是否可用(通过互联网),但是在新线程中执行此操作(在检查期间不冻结表单)。 当找到新版本时,会显示相应的MessageBox ,但它没有父级(因为它是从线程调用的,而不是直接从form1调用的)。 如何使用form1作为父级显示MessageBox ?

在MouseOver上更改TabControl的SelectedTab

我有一个带TabControl的Windows窗体项目。 当你用指针hover它时,有谁知道如何更改SelectedTab ?