草庐IT

c# - 检测 ctrl+左键单击 winforms 应用程序

如何检测用户何时按住ctrl并左键单击Windows窗体应用程序中的按钮? 最佳答案 您需要检查Form.ModifierKeys的值以查看是否按下了Control,例如:btn.Click+=newEventHandler(btn_Click);privatevoidbtn_Click(objectsender,EventArgse){if(Form.ModifierKeys==Keys.Control){//DoCtrl-LeftClickWork}} 关于c#-检测ctrl+左键单

c# - 如何创建 5 个按钮并动态分配各个点击事件?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我需要在Windows窗体上动态创建5个按钮,每个按钮都应该响应点击事件。我试过了,但所有按钮都响应同一事件。

c# - 为过时的 C# 事件生成警告

有没有人知道让VisualStudioC#编译器在使用过时事件时发出构建警告的技巧或解决方法?如果我创建一个带有公共(public)事件的简单程序集并将Obsolete属性应用于该事件,当我引用该程序集并订阅另一个项目中的事件时,编译器不会在我构建时发出警告(即使使用最高警告级别或设置为错误的警告)。项目一中的事件声明:publicclassAPIClass{[Obsolete("Obsoleteinv2.0")]publiceventEventHandlerObsoleteEvent;}在项目2中使用Obsolete事件不会导致生成警告:privatevoidSubscribeToE

c# - 延迟事件处理直到事件被触发

在C#中,延迟处理所有已知事件直到实体被完全修改的最佳方法是什么?例如,一个实体-MyEntity-具有属性ID、名称和描述...publicclassMyEntity{publicInt32ID{get;set;}publicStringName{get;set;}publicStringDescription{get;set;}}当修改每个属性时,每次修改都会触发一个事件。有时,ID是唯一被修改的属性,有时所有属性都被修改。我希望修改事件的注册监听器等待,直到“批处理”中被修改的所有属性都被修改。实现此目标的最佳方法是什么?在我看来,类似于UnitOfWork模式的东西,可以在调用

c# - 单次事件订阅

我相当确信这是不可能的,但我还是要问。为了对事件进行单次订阅,我经常发现自己使用这种(自己发明的)模式:EventHandlerhandler=null;handler=(sender,e)=>{SomeEvent-=handler;Initialize();};SomeEvent+=handler;这是相当多的样板文件,它也让Resharper对修改后的闭包提示不已。有没有办法将此模式转换为扩展方法或类似方法?有更好的方法吗?理想情况下,我想要这样的东西:SomeEvent.OneShot(handler) 最佳答案 重构为扩展方

c# - 将键盘事件发送到 C# 中不处理 Windows 事件的另一个应用程序

这是我的情况:我们正在编写一个必须将MicrosoftKinect坐标转换为键盘和鼠标事件的应用程序。当我们需要控制鼠标时,在任何类型的应用程序中,一切都按照我们的预期进行。当我们需要将键盘事件(如按下或向上键)发送到不处理Windows事件的应用程序(例如游戏)时,就会出现问题。我们尝试了.net框架的SendKeys类,它只适用于Windows应用程序。当应用程序是像《半条命》或《毁灭战士》这样的游戏时,我们无法获得相同的效果。那么,这是我的问题:我们如何才能有效地将键盘事件发送到这些其他应用程序? 最佳答案 您需要使用Send

c# - .NET 事件特殊方法(添加/删除/提升/其他)

我想知道EventInfo.GetRaiseMethod和EventInfo.GetOtherMethods方法。显然,CLR支持4种与事件关联的方法:add、remove、raise和“others”。但是在C#中创建的事件只有add和remove...我假设raise在VB中使用,因为你必须指定一个RaiseEvent方法,但显然不是这样:GetRaiseMethod总是返回null。那么,有没有人知道:如果一个事件从未被使用过,那么将一个raise方法与该事件相关联有什么意义呢?是否有使用此方法引发事件的特定MSIL指令?(我在操作码中找不到类似的东西)GetOtherMetho

c# - 如何 TDD 异步事件?

基本问题是如何创建需要调用方法的单元测试,等待测试类上发生事件,然后调用另一个方法(我们实际要测试的方法)?如果您有时间进一步阅读,下面是场景:我正在开发一个必须控制硬件的应用程序。为了避免硬件可用性的依赖性,当我创建我的对象时,我指定我们在测试模式下运行。当发生这种情况时,被测试的类会创建适当的驱动程序层次结构(在本例中是硬件驱动程序的薄模拟层)。假设所讨论的类是一个电梯,我想测试给我电梯所在楼层数的方法。这是我的虚拟测试现在的样子:[TestMethod]publicvoidTestGetCurrentFloor(){varelevator=newElevator(Elevator

c# - 在 XAML 中为一个事件添加多个事件处理程序?

在程序代码中可以做以下事情://Addtwoeventhandlerforthebuttonclickeventbutton1.Click+=newRoutedEventHandler(button1_Click_1);button1.Click+=newRoutedEventHandler(button1_Click_2);但如何在XAML中为按钮的点击事件添加多个事件处理程序?感谢您的任何提示! 最佳答案 您不能在XAML中订阅多个事件处理程序。但是,您可以通过订阅单个事件处理程序然后从事件处理程序调用两个或多个方法来实现相同的

c# - 是什么导致 BindingList<T> 中的 ListChangedType.ItemMoved ListChange 事件?

我有一个显示在DataGrid中的BindingList(T)。我正在监视ListChanged事件并在ListChanged事件被触发时执行不同的操作。我正在检查事件的ListChangeType参数以检查列表是如何更改的,然后做出相应的响应。但是,我注意到有一个ListChanged事件类型ItemMoved。我有“上移”和“下移”按钮,用于在列表中上下移动项目。但这些实际上是删除选中的item,然后在更高或更低的位置重新插入。但是,我没有看到任何看起来会移动列表中的项目的BindingList(T)方法。那么我是不是遗漏了什么,或者只是没有办法移动BindingList中的项目,