问题标签 [currencymanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# Binding:如何禁用 BindingList 中的 CurrencyManager,以便不维护当前项目位置并且不发出信号?
我有两个数据绑定到同一个 BindingList 的 ListBox。
问题是当从 GUI 更改选定项时,它会更改 BindingList 中的位置,然后 BindingList 会向另一个 ListBox 发出信号以更改其选定项。
所以我有两个 ListBoxes Selected Item 也同步,这对我不利。
我想保持同步的项目列表。没有光标位置。
如何禁用该光标以使其不被维护?
示例代码(只需在设计时将两个 ListBoxes 添加到 Form 并注册 SelectedIndexChanged 事件并使用按钮注册按钮单击事件):
谢谢,--冉。
c# - 根据 GridView 数据显示新表单
我的主窗体 MainForm 上有一个 GridView radGvA133s。我希望能够双击 GridView 的一行并打开一个新表单 A133Form 以允许编辑所选行。
这是双击代码:
这是 A133Form 代码:
最后,这是 A133 类代码:
不幸的是,当我双击 GridView 时,我收到此错误:“InvalidCastException 未处理。无法将 'System.Data.DataRowView' 类型的对象转换为 'MHDFMS.BusinessLogic.A133' 类型”
此错误发生在双击事件的第一行。
我在这里不知所措,已经把头发拉了一段时间。我错过了一些明显的东西吗?有没有更简单(或更好!)的方法来达到我想要的结果?
任何帮助是极大的赞赏!
c# - 如何防止 CurrencyManager 为绑定对象调用 BeginEdit()/EndEdit() 方法
我有一个带有几个文本框和一个数据网格的表单。一个业务实体可以绑定到此表单。例如,BO 看起来像这样:
所以在表单上,FirstName 和 LastName 绑定到文本框,Relatives 绑定到网格。同样在表单上我有按钮保存和取消。单击保存按钮时,我调用 IEditableObject.EndEdit(),单击取消按钮时,我调用 IEditableObject.CancelEdit()。我希望 CancelEdit() 方法拒绝用户所做的所有更改,包括绑定到网格的亲属的更改。到现在为止还挺好..
但是网格控件使用 CurrencyManager(网格实际上是 Devexpress 控件,但没关系,因为我相信 WinForms 控件也使用它)。每次用户更改行时,CurrencyManager 都会为 Relatives 集合中的项目调用 BeginEdit() 和 EndEdit()。因此,当单击 Cancel() 按钮时,只会取消 FirstName 和 LastName 中的更改,因为对于 Relatives 集合中的子对象 EndEdit() 已经被网格的底层 CurrencyManger 调用!所以,问题 - 如何防止 CurrencyManager 调用这些方法,以便我可以通过一次调用拒绝所有更改?
谢谢!
c# - 更新 CurrencyManager 头寸
我有一个ContextMenuStrip
用于 a 的DataGridView
,DataGridView 在SplitContainer
面板内。我的用户要求他们能够右键单击网格中的任何行,然后他们右键单击的行将成为选定的行并出现菜单。我一直在工作的代码,直到我将 DataGridView 放在 SplitContainer 面板内
一切似乎都工作正常,直到它到达最后一行
Position 始终保持在 -1,即使hitTestInfo.RowIndex
它尝试分配的值不同。这可能是因为 SplitContainer 面板吗?如果是这样,有关如何解决它的任何建议?
谢谢
c# - 将 DataGridView 绑定到 DataSource - 引发 CurrencyError IndexOutOfRangeException
几天来我一直在为这个问题感到困惑,这让我很受打击,但老实说,我还没有那么有经验,而且我在使用 DataGridView 时遇到了麻烦——这似乎是一个常见的话题。
队列类:
作业类:实际上它包含大约 30 个不同类型的值,但它们都采用相同的格式:
与 DataGridView 交互时出现错误:
DataGridView 出现以下异常:
System.IndexOutOfRangeException:索引没有值。在 System.Windows.Forms.CurrencyManager.get_Item(Int32 index) 在 System.Windows.Forms.DataGridViewDataConnection.GetError(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex)
当进入调试器时,它会在初始 Application.Run(new frmMain() 上触发。我到底做错了什么?程序仍然正常运行和更新,但我什至无法处理该事件以抑制默认错误消息!
编辑 - 回答!与其清除列表并重新创建它,不如只更新其中的值效果更好。目前我有这个代码:
这可以防止它!
.net - 从 CurrencyManager 获取抛出并吞下的异常
.NET Windows 窗体CurrencyManager
会吞下导航时引发的异常(请参阅MSDN Social 上的“CurrencyManager.OnPositionChanged 中的错误 - 吃掉异常”)。
但是,我需要捕获或获取可能在CurrentChanged
事件处理程序中抛出的异常。有没有办法得到它?订阅BindingComplete
和阅读e.Exception
无济于事。
目前,当保存旧项目失败时,用户没有得到任何反馈。因此我需要一种方法来获取异常。
干杯马蒂亚斯
c# - 与没有 BindingSource 的 CurrencyManager 的控件绑定
我决定不使用 bindingSource 类,而是在我的 Windows 窗体应用程序上实现绑定功能。我在某些方面取得了成功,但几乎没有发生并发症。我想找出原因。我从数据源和三个控件填充了 DataTable:textbox1、textbox2、checkedBox1。我设法绑定控件并显示值;
正如您所猜测的,myTable 是包含从数据库表填充的数据的数据表。我可以使用 CurrencyManager 获取当前行值,例如;
但是当我想使用当前行更改值时,不知何故在第一个字段设置之后,其他人会自动更改为先前的值。我是说:
第一次分配有效,但随后表单控件在编辑开始之前将 textBox2、checkBox1 的值更改回原始值。所以我不能以这种方式更新整行。
另一方面,使用 BindingSource 我会得到当前行类似的样式:
并通过以下方式更改该行的字段:
以结束编辑:
所有表都已准备好更新,因为整行已成功更改。我想看看差异,并在不使用 bindingSource 的情况下对其进行管理。这是否意味着我应该使用 EndEdit() 所做的事情?我错过了什么,或者忘记了痴迷?
.net - 数据绑定到十进制(或对象)属性时获取基本字段类型
我有一个自定义 NumericEditor 控件,它有一个名为 Value 的可为空的 Decimal 属性。当我将数据字段绑定到值时,我想检索绑定数据的基础类型,以便在源字段是整数数据类型时限制小数位的使用。
我想我必须在 BindingContextChanged 事件中执行此操作,但是如何从绑定本身获取数据字段的类型?我的 Google-Fu 现在让我失望了。
简而言之,我正在寻找类似于GetValueType
以下问题中提到的方法: 简单数据绑定 - 如何处理绑定字段/属性更改。Winforms,.Net
我想如果 Value 属性是一个对象,这种方法也会很方便。
c# - 线程安全货币管理器
我的 datagridview 绑定到一个列表,我在后台线程中将项目添加到列表中。如果我在 UI 线程中调用 CurrencyManager.refresh,是否需要同步。也就是 refresh 和 list.add 可以在不同步的情况下并发运行吗?谢谢。
c# - 将 DataSource 设置为 Datagridview 后添加一行
我有很多与数据网格的数据源绑定相关的问题。我有一个 DatagridView,我从列表中设置 DataSource
MyClass 在哪里
现在想向我的 DataGridView 添加一个新行
但它不可能引发错误,因为Datagrid 的Datasource与 List 绑定 li绑定。所以我的第一个问题是我怎么能做到这一点?
我的第二个问题是,为此,我制定了一个解决方案来更改我的 List li 并向其添加新数据行,然后将其设置为 datagrid 的数据源,但我认为这不是一个可行的解决方案,还有更好的解决方案吗?
甚至试图通过 CurrencyManager 做到这一点
据我所知,我暂停了 DataGrid 的绑定以向 Grid 提供格式,正如我在我的一篇文章Make Row Visible false中执行的那样。但是为什么在向数据网格中添加行时它在这里不起作用?