首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CurrencyManager PositionChanged-窗体从其MDIParent分离后,事件停止工作

CurrencyManager是Windows Forms中的一个类,用于管理数据绑定的位置和状态。它主要用于在数据绑定控件中处理数据源中的记录。PositionChanged是CurrencyManager类中的一个事件,该事件在当前记录位置更改时触发。

当窗体从其MDIParent分离后,即窗体不再作为MDI子窗体使用时,CurrencyManager的PositionChanged事件停止工作。这是因为CurrencyManager是与数据绑定控件关联的,并且在数据绑定控件失去焦点或不可见时,事件可能会停止触发。

要解决这个问题,可以在窗体从MDIParent分离时手动取消数据绑定并重新绑定。可以在窗体的FormClosing事件中执行以下操作:

  1. 获取数据绑定控件的CurrencyManager对象,可以使用BindingContext的GetBindingManager方法来获取。
  2. 调用CurrencyManager的SuspendBinding方法,暂停数据绑定。
  3. 在窗体关闭后,即FormClosed事件中,调用CurrencyManager的ResumeBinding方法,恢复数据绑定。

以下是示例代码:

代码语言:txt
复制
private CurrencyManager currencyManager;

private void Form1_Load(object sender, EventArgs e)
{
    // 在窗体加载时获取数据绑定控件的CurrencyManager对象
    currencyManager = (CurrencyManager)this.BindingContext[yourBindingSource];

    // 绑定CurrencyManager的PositionChanged事件
    currencyManager.PositionChanged += new EventHandler(currencyManager_PositionChanged);
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // 取消数据绑定
    currencyManager.SuspendBinding();
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    // 重新绑定数据
    currencyManager.ResumeBinding();
}

private void currencyManager_PositionChanged(object sender, EventArgs e)
{
    // 处理记录位置更改的逻辑
}

在这个例子中,yourBindingSource是数据绑定控件的数据源。在窗体加载时,获取CurrencyManager对象并绑定PositionChanged事件。在窗体关闭时,取消数据绑定,然后在窗体关闭后重新绑定数据。

关于腾讯云相关产品,腾讯云提供了一系列的云计算解决方案和产品,可以根据具体需求选择合适的产品。可以参考腾讯云官方文档来了解更多关于云计算的信息和产品介绍。

腾讯云产品介绍链接:腾讯云产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【愚公系列】2023年11月 Winform控件专题 Form控件详解

, EventArgs e){ ChildForm childForm = new ChildForm(); childForm.MdiParent = this; //设置子窗体的父窗体为多文档界面容器...窗体,并通过设置childForm的MdiParent属性将其设置为MainForm的子窗体,最后通过调用childForm的Show方法显示该子窗体。...在执行该代码,点击按钮,就会在MainForm窗体中创建一个ChildForm子窗体,该子窗体可以在MainForm的客户区中移动和调整大小。...其中No表示文本方向左至右,Yes表示文本方向右至左,Inherit表示从父控件继承文本方向设置。...这样,用户在输入完毕按下回车键,就会自动触发该按钮的Click事件。CancelButton属性用于指定在用户按下ESC键时,窗体要执行哪个按钮的Click事件

2.3K21

【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去

要想获得值可能就得额外采取一些做法,例如响应弹出控件的关闭事件,或者把原窗体传入弹出控件完了在后者中做原本应该在原窗体中做的事~等等,办法当然有很多,但这都是因为只能Show带来的多余的事,有什么比在一个方法中弹出控件...ShowDialog弹出时,在收到WM_SHOWWINDOW前,Owner会被Disable //故需在收到该消息立即Enable它,不然Owner窗体和本窗体都将处于无响应状态...,被Disable的是MDI主窗体 //并且Parent也会指向MDI主窗体,故需改回为Owner,这样弹出窗体的Location才会相对于Owner而非MDIParent...base.StartPosition = FormStartPosition.Manual; //重要 base.TopMost = true; //使本窗体像普通窗体一样显示自动激活首控件...每个方法参数又分Control和ToolStripItem两类,都是代表什么控件上弹出浮动层的意思,前者接受Button、TextBox等控件(不能传入Form,后果会不愉快),后者接受工具栏上面的项目

2.8K20
  • 使用C#开发数据库应用程序

    (最小化),默认值为Normal b.窗体的重要事件 事件: Load 窗体加载事件窗体加载时发生 MoseClick 鼠标单击事件,当用户单击窗体时发生 MouseDoubleClick...鼠标双击事件,当用户双击窗体时发生 MouseMove 鼠标移动事件,当鼠标移过窗体时发生 KeyDown 键盘按下事件,在首次按下某个键时发生 KeyUp 键盘释放事件,在释放键时发生 例如...设置子窗体:在调用打开子窗体的Show()方法前,在代码中将子窗体MdiParent属性设为this】 例如: //用户单击菜单项时,出现创建学员用户窗口 private void tsmiNewStudent_Click...(object sender,EventArgs e) { //创建窗体对象 AddStudentForm addStudentForm=new AddStudentForm(); addStudentForm.MdiParent...(2)设置DataGridView的属性和个列的属性 (3)指定DataGridView的数据源 c.如何保存修改的数据 (1)增加"保存修改"按钮 (2)编写事件处理方法 d.常见错误

    5.9K30

    C#学习笔记—— 常用控件说明及其属性、事件

    数组中的每个元素表示以此窗体作为父级的多文档界面(MDI)子窗体。 (27)MdiParent属性:用来获取或设置此窗体的当前多文档界面(MDI)父窗体。...调用格式为: 窗体名.ShowDialog(); 3.常用事件 的 (1)Load事件:该事件窗体加载到内存时发生,即在第一次显示窗体前发生。...3、常用事件: 定义器控件响应的事件只有Tick,每隔Interval时间将触发一次该事件。...2、常用事件: (1)Scroll事件:该事件在用户通过鼠标或键盘移动滑块发生。 (2)ValueChanged事件:该事件在滚动条控件的Value属性值改变时发生。...值为 true时,表示是子窗体,值为false时,表示不是子窗体。 (2)MdiParent属性:该属性用来指定该子窗体的MDI父窗体

    9.7K20

    .net题库第1-9章

    第一章 单项选择题 第1题 C#程序的执行过程是( ) 程序的Main方法开始,到最后一个方法结束 (答案) 程序的第一个方法开始,到最后一个方法结束 程序的Main方法开始,到Main...必须要先把数值变量转换成字符串 使用不带参数的WriteLine()方法时,将不会产生任何输出 使用Write()输出字符串时,光标将会位于字符串的下一行 得分: 10.0 /10.0 第4题 C#语言经编译得到的是...,不正确的有( ) 一个事件可以关联多个事件处理方法 (答案) 多个事件可以使用一个事件处理方法 事件应当被定义为public否则就不能被外部对象引发 delegate是所有事件的元类型 得分...ActiveMdiChild isMdiContainter (答案) isMdiChild MdiParent 得分: 10.0 /10.0 第2题 为使计时器控件每隔1秒钟产生一个Tick...窗体有边框但不能调整大小 窗体是透明的 窗体没有边框并不能调整大小 (答案) 窗体没有边框但能调整大小 得分: 10.0 /10.0 第8题 关于窗体的MouseDown事件过程Form1

    1.1K10

    用Go语言写一个Windows的外挂(上)

    由于各种未知的原因,比如网络不稳定,或者USBKey插入时间过长产生了一些莫名妙的错误,那么就需要人工去重启一下服务或重新登录一下账号,而且,这个工作有时候是在夜间操作的,这相当于要24小时待命啊,虽然故障频率不高...所以凭借着我18岁那年的开发经验,脑子里想到了 Windows 的消息模型,使用 SendMessage 给对应的窗体控件句柄发送特定的事件不就搞定了么,异常自动重启使用 CreateProcess 不就行了吗...是不是感觉发送键盘点击事件、鼠标点击事件就OK了?...,那么就可以开启监听了 image.png 点击动作在Windows消息来看,是分为两个动作,一个是 WM_LBUTTONDOWN 而另一个是 WM_LBUTTONUP ,所以我们需要发送两次事件,当完成这两次发送...image.png image.png image.png 我们大概会得到如下几类错误 密码错误 通讯故障 USBKey有问题 对于密码错误这个问题,我们的外挂应该立即停止工作,因为密码输入次数超过限制

    5.9K20

    Excel编程周末速成班第18课:使用用户窗体创建自定义对话框

    此名称(Name属性)是你在VBA代码中用来引用窗体的名称。在创建用户窗体,建议为赋予一个描述性名称,以避免必须使用默认名称。 注意:通常,你需要在设计阶段设置所有用户窗体的属性。...然而,显示窗体,更改代码中的这些属性将移动窗体。 ?...下一步也是最后一步,就是将代码添加到工程中,窗体中显示和检索数据。 1.在“工程”窗口中,双击代码模块的名称以打开编辑窗口。 2.选择“插入➪过程”以显示“添加过程”对话框。...该程序将显示一个带有你输入的文本的消息框,显示VBA代码如何用户窗体中检索数据。 这是一个简单的演示。...5.当你的程序使用完窗体,如何销毁该窗体

    11K30

    使用工作队列管理器(四)

    来确定正在处理的工作的状态之前,可以使用以下方法:Detach()method Detach(ByRef token As %String, timeout As %Integer=86400) as Status初始化工作队列时创建的对象引用中分离工作队列对象...调用 Detach() 方法,对分离对象引用的大多数调用都会返回错误。但是,NumActiveWorkers() 和 NumWorkers() 方法返回 -1。...s queue = $system.WorkMgr.Attach(token,.sc) if $$$ISERR(sc) { ret sc }停止工作队列并删除工作项可以停止工作队列...当任何工作人员作业该队列开始第一个工作项时,该工作人员作业首先检查工作管理器队列全局变量以查看是否有任何设置逻辑。如果是这样,worker 作业将执行该逻辑,然后启动工作项。...As %String) as %Status指定工作进程在处理完队列中的最后一项调用以将进程恢复到其先前状态的代码。

    35420

    【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

    控件模板可以通过样式设置或在控件上显式设置以更改显示方式。 所有控件都有嵌入在 .net wpf 程序集中的默认模板(和样式)。18.WPF 是建立在 Windows 窗体之上的还是完全不同的?...ICommand 在 MVVM 中经常使用,它提供了View和ViewModel(用户界面和业务逻辑)之间的分离逻辑。 XAML 提供了一种通过 ICommand 更好地绑定 GUI 事件的方法。...冻结,无法再修改 Freezable。 Freezable 提供了一个 changed 事件来通知观察者对对象的任何修改。...MVVM 的特性列表它分离了业务层和表示层,如 MVP 和 MVC改进关注点的结构/分离(视图、视图模型和模型)。 实现更好的设计/开发人员工作流程。 增强简单性和可测试性。... WPF 的角度来看,BindingList 没有得到正确支持,除非真的必须,否则您永远不会在 WPF 项目中真正使用它。36.冒泡事件和隧道事件之间的确切区别是什么?

    49422

    1-3 Winform 中的常用控件(

    图1-8 员工信息录入窗体目标界面 u 实验步骤(1): 由图1-9所示,工具箱之中拖拽具体的控件到Form窗体上,并更改标签对象和按钮的text属性为图1-8所标内容。...案例学习:标签控件的隐藏,窗口打开与关闭 本次实验目标是建立两个窗体,当点击图1-11的登录系统时候,可以打开另一个窗体,在点击文字打开显示学校名称,点击文字隐藏时候隐藏学校名称。...图1-11 窗口打开与关闭窗体目标界面 u 实验步骤(1): 由图1-11所示,工具箱之中拖拽标签控件和linkLabel超链接文本控件到Form窗体上,更改标签文本的颜色、字体和大小属性,填写每个控件的...Form2 newForm = new Form2();//实例化Form2窗体,命名为newForm             newForm.Show();//将实例化窗体打开            ...基本的属性和方法定义如表1-3所示: 属性 说明 Enabled 确定是否可以启用或禁用该控件 方法 说明 PerFormClick Button 控件的 Click 事件 事件 说明 Click 单击按钮时将触发该事件

    2.8K10

    创建可维护和可测试的 Windows 窗体应用程序的 10 种方法(译)

    仅仅因为 Windows 窗体是一项“遗留”技术,并不意味着你注定会造成无法维护的混乱。下面是创建可维护和可测试的 Windows 窗体应用程序的十个技巧。 1....因此,如果你有一个资源管理器样式的应用程序,左侧是树视图,右侧是详细信息视图,则将 TreeView 放入自己的 UserControl,并为每个可能的右侧视图创建一个 UserControl。...使用事件聚合器模式 另一种在 Windows 窗体应用程序中非常有用的设计模式是事件聚合器模式(有时也称为“信使”或“事件总线”)。这是一种模式,其中事件的引发者和事件的处理者根本不需要相互耦合。...除了从根本上分离事件的发布者和订阅者之外,事件聚合器还具有创建极易进行单元测试的代码的巨大好处。 9....10.不要太晚 可以将我上面描述的所有模式和技术改造为现有的 Windows 窗体应用程序,但我可以痛苦的经验告诉你,这可能需要大量工作,尤其是当窗体背后的代码达到数千行时。

    1.3K10

    c#实战教程_ps初学者入门视频

    2.2.2 事件队列 Windows把用户的动作都看作事件,Windows操作系统负责管理所有的事件事件发生,这些事件被放到系统事件队列中,Windows操作系统系统事件队列中逐一取出事件,分析各个事件...System.Application类中的静态方法Run负责完成一个应用程序的初始化,运行,终止等功能,参数是本程序使用的窗体Form1类对象,Run方法还负责操作系统接受事件,并把事件送到窗体中响应...选中标题为黑色的按钮,打开事件窗体(见图2.4.2B右图),选中Click事件右侧下拉列表中选择事件处理函数为button1_Click,这样两个按钮就使用相同的单击事件处理函数了。...(4) 单击ToolBar控件属性Buttons按钮,打开ToolBarButton集合编辑器(见上图),单击添加按钮,增加一个按钮,属性ImageIndex的下拉列表中选择按钮使用的图标,设置按钮的...但如果一个程序使用这种方式获得数据,会是十分困难的,程序必须网页中把数据分离,才能加以利用。

    15.6K10

    Knockout.Js官网学习(简介)

    MVP 里的M 其实和MVC里的M是一个,都是封装了核心数据、逻辑和功能的计算关系的模型,而V是视图(窗体),P就是封装了窗体中的所有操作、响应用户的输入输出、事件等,与MVC里的C差不多,区别是MVC...我们再从IView这个interface层来解析,它可以帮助我们把各类UI与逻辑层解耦,同时可以UI层进入自动化测试(Unit/Automatic Test)并提供了入口,在以前可以由WinForm/...MVVM的优点 MVVM已在微软WPF/Silverlight/WP7中广泛应用,和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大优点 1. 低耦合。...简单的说,在MVVM里,UI操作涉及的数据被包装成ViewModel,接着在UI输入/显示元素分别标注对应到ViewModel某个属性值。...这种双向绑定(Two-Way Binding)的概念,若使用传统做法得在ViewModel的属性修改事件将新值反映到某个显示/输入元素上,还得拦截输入元素的onChange事件,用程式将最新输入结果反应到

    2.3K20

    Rust winit 0.30.0版本简介

    但值得注意的是,在该方法的2个入参: event_loop: &ActiveEventLoop window_id: WindowId 这两个参数含义上讲,代表了当前正激活的事件循环以及与之匹配的窗口...这里就不难理解,winit的0.30.0的新模型,主要是为了以友好的接口方式来支持多窗体、多事件循环。我们可以通过该事件回调,来得到当前是哪个窗体触发,在哪个激活的事件循环中触发的窗体事件。...考虑多平台可以移植性,推荐建议应用程序在收到第一个 Resumed 事件仅初始化图形上下文并创建窗口。...由于系统平台的事件驱动具体实现的差异,可能会调用多次,要做“幂等”处理,确保在收到 Resumed 事件仅初始化一次图形上下文和窗口(比如,iOS上只要激活了就会触发一次,如果没做幂等处理,就会在每次激活时都初始化一次图形上下文和窗口...通过ApplicationHandler,我们将整个应用程序的生命周期抽象出来,并通过事件回调的方式,来处理窗体事件。 上述代码运行以后,会在桌面出现一个窗体,不过此时你还无法点击窗体关闭按钮关闭它。

    48210

    Excel编程周末速成班第21课:一个用户窗体示例

    要添加代码: 1.单击工程窗口中的“查看代码”按钮以打开用户窗体的代码编辑窗口。 2.窗口左上方的列表中,选择UserForm。 3.窗口右上方的列表中,选择Initialize。...与其在输入检查数据(下一节中将对某些字段进行的操作),不如直接阻止输入不正确的数据有时更为有效。 在键盘输入到达控件之前对进行检查的方法是使用KeyDown事件。...因此,不应将验证代码放在按钮的Click事件过程中,而应放在它自己的过程中。然后可以“完成”和“下一步”按钮的Click事件过程中调用此过程。...“完成”按钮执行与“下一步”按钮相同的任务,但有一个例外:如果验证成功,则在工作表中输入数据,关闭窗体。 “取消”按钮将放弃当前在窗体中输入的所有数据,然后关闭该窗体。...如果你创建了将数据窗体传输到工作表的过程,则“完成”和“下一步”按钮的Click事件过程都可以调用此过程。 同时,该窗体需要代码以清除控件中的所有数据。

    6.1K10

    【C#】让工具栏ToolStrip能触发焦点控件的Leave、Validating、DataError等事件以验证数据

    (),该方会触发窗体中焦点控件的Validating事件以验证数据,达到与0尺寸Button法几乎相同的效果。...另外发现ToolStrip还有个操蛋的问题,就是上述方法都只对ToolStripButton的Click事件有效,但如果按钮是分离按钮ToolStripSplitButton,大家知道,按钮部分的单击事件就该用...ToolStripManager.VisualStylesEnabled = false; //不显示拖曳抓柄 GripStyle = ToolStripGripStyle.Hidden; } //在工具栏获得句柄将控件添加进窗体...= null) { fm.Controls.Add(btn); }//这样添加,btn.Location会是0,0 } //在工具栏被碰到时(其实选用其它类似事件也行)将焦点转移到btn...其实为了解决这个问题我颇费了一番周折,最开始想到的其实就是这招,但觉得猥琐了点,作为一个有追求的码农,我认为应该消息层面去解决,所以一开始就把这个阴招放在一边,专心捣鼓消息。

    1.2K20

    快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

    用 Eric6 与 PyQt5 结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在界面上花很多时间。 可以说这是一对GUI开发完美的组合!...,输入文件名后点击保存按钮 在Eric6的窗体标签下可以看到程序已自动创建了HelloWindow.ui文件 设计窗体 点击上一步的保存按钮,计算机会直接打开Qt设计师,并自动将HelloWindow.ui...在Qt设计师中,可以很直观的为控件添加事件命令,在PyQt5中这种方式添加的事件命令被称为信号/槽。...(注:信号/槽机制是PyQt独有的信号传递机制,使用非常方便) 点击工具栏的编辑信号/槽图标 鼠标移动到关闭控件上面,左键按下拖拽处红色地线标志松开鼠标 弹出配置链接窗口,在该窗口中勾选显示...在弹出的窗体代码产生器窗口中点击新建 弹出新建对话框类中输入类名后点击OK 回到窗体代码产生器窗口展开Button_ok(QPushButton),勾选on_Button_ok_clicked

    2K20

    Python-Tkinter图形化界面设计(详细教程 )

    图像化编程的基本步骤通常包括: ○ 导入 tkinter 模块 ○ 创建 GUI 根窗体 ○ 添加人机交互控件并编写相应的函数。 ○ 在主事件循环中等待用户触发事件响应。...当导入tkinter模块,调用 Tk()方法可初始化一个根窗体实例 root ,用 title() 方法可设置标题文字,用geometry()方法可以设置窗体的大小(以像素为单位)。...在初始化根窗体和根窗体主循环之间,可实例化窗体控件,并设置属性。父容器可为根窗体或其他容器控件实例。常见的控件共同属性如下表: ?...3.2 按钮(Button) 返回目录 主要是为响应鼠标单击事件触发运行程序所设的,故除控件共有属性外,属性command是最为重要的属性。...通式为: 控件实例.bind(,) 其中,事件代码通常以半角小于号“” 界定,包括事件和按键等 2~3个部分,它们之间用减号分隔,常见事件代码见下表: ?

    14.2K40

    隔壁老王都知道的用C#+SQL Server 仓库管理系统设计和实现【建议收藏,不然看着看着就不见了】

    因此,该系统的所带来的效益将远远大于开发,维护,运行等一切成本,通过上述分析,该系统在经济上是可行的。... JScript 到 C++ 的所有编程语言具有对框架的相似访问,开发人员可以自由选择它们要使用的语言。...1、功能需求 系统功能包括: 产品入出库登记 确认入出库信息 删除库内信息 借出信息登记 产品分类管理 报表生成 事件记录 数据检测 数据警告 系统管理员功能: 添加人员 删除人员 查询库内信息...作用有以下几点: 1、他是数据库开发的首要步骤,也是整个系统开发必不可少的一个环节。...我们所建立概念模型其实是用户角度看到的数据库,因为我们是用户的角度进行设计的。它可以用E-R模型来表示也可以用3NF关系群来表示。

    2.9K40

    谷歌浏览器问题事件BEX引起的闪退崩溃异常的修复与思考

    前言 最近,我们部门负责项目运维的小王频频接到甲方的反馈,运行的项目使用谷歌浏览器登录,每次点击处理2秒,浏览器自动闪退崩溃.小王同学折腾了一个星期,还没找到问题的原因.甲方客户都把问题反馈给项目经理了...问题一:问题事件BEX浏览器停止工作 点击项目中问题处置页面跳转,光标出现转圈 ,2秒弹框提示Google Chrome已停止工作 [在这里插入图片描述] 原因 软件中dll文件和浏览器发生冲突 解决...因为dll文件时软件的运行依赖,如果随便删除会导致软件本身运行异常 如果想要彻底解决BEX问题事件,需要修复造成冲突的软件,大部分是软件本身存在问题,建议下载官方软件 问题二:谷歌浏览器闪退 点击项目中问题处置页面跳转...,光标出现转圈 ,2秒浏览器闪退消失 项目部署在同一个服务器上,使用不同的计算机进行测试,问题只是在部分计算机中出现 原因 由于问题仅在部分电脑上出现,初步判定不是项目的问题,系统方向排查问题 对无问题计算机和问题计算机...BEX引发的谷歌浏览器闪退崩溃的异常问题.这个BUG因为不可复现性导致特别难以发现和解决,正是由于这一次的BUG解决过程,让我了解到了一位攻城狮在项目开发维护过程中实际经验的重要性,多思考,多实践,多多积累经验

    3.9K83
    领券