Tag: c# 2.0

使用Reflection在对象初始化之前设置静态变量值?

无论如何设置尚未初始化的对象上的静态(私有)变量的值? SetValue方法需要一个实例,但我希望有办法解决这个问题。

最佳实践:如何公开只读ICollection

我在我的class级中有一个名为foos的ICollection ,我希望将其公开为只读(请参阅此问题 )。 我看到界面定义了一个属性.IsReadOnly ,这似乎是合适的……我的问题是:如何让类消费者明白foos是只读的? 在尝试使用未实现的方法(如.Add()之前,我不想依赖它们记住查询.IsReadOnly 。 理想情况下,我想将foos暴露为ReadOnlyCollection ,但它没有实现IList 。 我应该通过一个名为GetReadOnlyFooCollection而不是通过属性来暴露foo吗? 如果是这样,这不会混淆那些期望ReadOnlyCollection吗? 这是C#2.0,所以像ToList()这样的扩展方法不可用……

C#2.0,3.0和4.0中的新function列表

我在.NET 1.1项目上工作了很长时间,我被困在C#1.0,​​现在我想赶上最新最好的。 Google在C#v2.0中返回了很多关于新function的信息,但对于版本3和版本4,我只发现了部分信息。 互联网上是否存在某些列表,列出了在v2.0,v3.0和v4.0中引入的所有新function?

由于先前的function评估超时,因此function评估被禁用

我有一个C#应用程序,我收到此错误: “function评估已禁用,因为之前的function评估已超时。您必须继续执行以重新启用function评估。” 我在stackoverflow和msdn上看到了许多与此错误相关的post,但没有找到解决方案。 大多数人都说这个错误来自multithreading应用程序,可以通过删除所有断点来解决。 在我的情况下,我的应用程序是单线程,我也删除了所有的断点,但我在调试应用程序时仍然收到此错误。 当我运行应用程序时。 没有调试,我的应用程序只是挂起,我必须通过visual studio停止它。 我试图找到它挂起的代码,然后找到它挂起的行。 这是代码片段: MatchCollection matchesFound = Regex.Matches(content, keywordPattern, RegexOptions.Multiline); int matchCount = matchesFound.Count; 当执行到达第二行时,即当代码试图获取Count属性的值时,我的应用程序将挂起。 我的正则表达式很好,因为我在Expresso中测试了它,我确信在执行Matches()方法时应用程序不会被挂起。 如果我通过调试来到那一行,我得到上面提到的错误。 有谁知道为什么会出现这个错误以及如何解决它? 我正在使用Visual Studio 2005。

如何从Windows服务C#取消关机

我启动了一个Windows服务(用C#.net2.0编写)。 我想检测计算机何时关机/重启并取消它。 取消后我想做一些动作并重启windows。 我试过了,但它不起作用 using Microsoft.Win32; partial class MyService: ServiceBase { protected override void OnStart(string[] args) { SystemEvents.SessionEnding += new SessionEndingEventHandler(OnSessionEnding); } private void OnSessionEnding(object sender, SessionEndingEventArgs e) { e.Cancel = true; //Do some work… } } 另一个测试: partial class MyService: ServiceBase { protected override void OnShutdown() { //Do some work… //base.OnShutdown(); } }

当取消选中复选框时,asp:复选框的OnCheckedChanged事件处理程序不会触发

我有一个转发器,在转发器的每个ItemTemplate中都是一个带有OnCheckedChanged事件处理程序集的asp:复选框。 复选框将AutoPostBack属性设置为true。 选中任何复选框时,将触发事件处理程序。 如果未选中任何内容,则不会触发事件处理程序。 知道为什么事件不会发生,以及我如何解雇它? 谢谢。 简化的转发器代码: 该集合与转发器绑定如下: protected override void OnPreRenderComplete(EventArgs e) { if (!Page.IsPostBack) { m_linkedItems = GetLinkedItems(); rptLinkedItems.DataSource = GetLinkableItems(); rptLinkedItems.ItemDataBound += new RepeaterItemEventHandler (rptLinkedItems_ItemDataBound); rptLinkedItems.DataBind(); } base.OnPreRenderComplete(e); } OnItemDataBound事件处理程序如下: private void rptLinkedItems_ItemDataBound(Object sender, RepeaterItemEventArgs args) { if (args.Item.ItemType == ListItemType.Item || args.Item.ItemType == ListItemType.AlternatingItem) { CategoryItem item = args.Item.DataItem as CategoryItem; […]

如何以编程方式最小化打开的窗口文件夹

如何获取打开的文件夹列表,通过它进行枚举并以编程方式最小化每个文件夹? 有时,当从应用程序中的一个表单跳转到另一个表单时,一些打开的文件夹会从工具中窃取焦点。 防止这种情况对我们的客户来说是高度优先的。 客户是视障人士,因此他们只能通过屏幕阅读器访问机器。 最小化其他窗口(文件夹)根本不是问题,实际上是一个要求。 我试过这个: foreach (Process p in Process.GetProcessesByName(“explorer”)) { p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; } 正如预期的那样没有好处。 更新 : 从这里的答案,我试过这个: delegate bool EnumThreadDelegate(IntPtr hWnd, IntPtr lParam); [DllImport(“user32.dll”)] static extern bool EnumThreadWindows(int dwThreadId, EnumThreadDelegate lpfn, IntPtr lParam); static IEnumerable EnumerateProcessWindowHandles(int processID) { List handles = new List(); EnumThreadDelegate addWindowHandle = delegate(IntPtr hWnd, IntPtr param) { handles.Add(hWnd); […]

如何在选中时更改System.Windows.Forms.ToolStripButton高亮/背景颜色?

我有一个ToolStripButton用作单选按钮。 选中时,按钮周围会出现蓝色轮廓,但没有背景颜色。 对于用户来说,检查按钮是不够清楚的,所以我想更改背景颜色以使检查状态更加明显。 当Checked属性设置为true时,如何更改高亮颜色? 这是一段代码: this.hideInactiveVehiclesToolstripButton.CheckOnClick = true; this.hideInactiveVehiclesToolstripButton.ForeColor = System.Drawing.Color.Blue; this.hideInactiveVehiclesToolstripButton.AutoSize = false; this.hideInactiveVehiclesToolstripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; this.hideInactiveVehiclesToolstripButton.Image = global::ClientUI.Properties.Resources.toggleInactive; this.hideInactiveVehiclesToolstripButton.ImageTransparentColor = System.Drawing.Color.Black; this.hideInactiveVehiclesToolstripButton.Name = “hideInactiveVehiclesToolstripButton”; this.hideInactiveVehiclesToolstripButton.Size = new System.Drawing.Size(48, 48); this.hideInactiveVehiclesToolstripButton.Text = “Hide Inactive Vehicles”; this.hideInactiveVehiclesToolstripButton.Click +=new System.EventHandler(this.hideInactiveVehiclesToolstripButton_Click);

事件订阅者是按订阅顺序调用的吗?

假设按订阅顺序调用事件订阅者是否安全? 例: void One(object sender, EventArgs e) {} void Two(object sender, EventArgs e) {} event EventHandler foo; foo += One; foo += Two; 当事件被触发时,One()总是在Two()之前调用吗? 编辑: 你应该不依赖它,我只是想。 这个想法是,多播代表与COMMAND模式类似。 所以我只是想知道。 通常你会使用一个保存COMMAND命令的集合,这样你就可以撤消/重做/无论如何。

如何关闭Word文档的运行实例? (C#)

我可以看到很多非常相似的线程,但似乎没有什么能给我一个应该是非常基本的解决方案。 从我的winforms应用程序,我需要关闭word文档的运行实例(从应用程序本身打开)。 当我从应用程序中打开word文档时,我会在列表中跟踪它。 现在我该如何关闭同一个doc? 这是我尝试过的: private bool CloseWord(string osPath) //here I pass the fully qualified path of the file { try { Word.Application app = (Word.Application)Marshal.GetActiveObject(“Word.Application”); if (app == null) return true; foreach (Word.Document d in app.Documents) { if (d.FullName.ToLower() == osPath.ToLower()) { d.What? //How to close here? return true; } } return true; } […]