我在.NET winform应用程序中有一个datagridview.我想右键单击一行,弹出一个菜单.然后我想选择复制,验证等内容
如何制作A)弹出菜单B)找到右键单击的行.我知道我可以使用selectedIndex,但我应该能够右键单击而不更改所选内容?现在我可以使用选定的索引,但如果有办法获取数据而不改变选择的内容那么这将是有用的.
在数据绑定的上下文中,ComboBox其属性ValueMember和DisplayMember属性已正确设置:
这SelectedIndexChanged和SelecetedValueChanged事件之间有区别吗?当从下拉列表中选择一个项目时,它们是否同时被触发ComboBox?
我在winform中有几个文本框,其中一些在groupbox中.我试图遍历我的表单中的所有文本框:
For Each c As Control In Me.Controls
If c.GetType Is GetType(TextBox) Then
' Do something
End If
Next
Run Code Online (Sandbox Code Playgroud)
但它似乎跳过了groupbox中的那些并且仅循环到表单的其他文本框.所以我为groupbox文本框添加了另一个For Each循环:
For Each c As Control In GroupBox1.Controls
If c.GetType Is GetType(TextBox) Then
' Do something
End If
Next
Run Code Online (Sandbox Code Playgroud)
我想知道:有没有办法循环遍历表单中的所有文本框 - 包括组框内的文本框 - 只有一个For Each循环?或者更好/更优雅的方式来做到这一点?
提前致谢.
我有两个表(在 SQL Server 数据库中)如下:
TblOrders
OrderID (PK)
(更多字段)TblEvents
EventID (PK)
OrderID (FK)(链接到 TblOrders 的 OrderID)
EventDate
状态
TblEvents 中的每个事件都属于 TblOrders 中的一个订单,每个事件都有一个日期和一个“状态”(一个数字代码)。一个订单可能有多个事件(至少一个)。
我需要一个 SQL 查询,为 TblOrders 中的每个 OrderID 查找其所有事件中最新事件的状态。例如:
输入表:
订单
==========
订单号
1
2
3
表事件
==========
EventID OrderID EventDate 状态
1 1 01/02/2011 4
2 1 02/02/2011 2
3 2 03/02/2011 2
4 3 03/02/2011 3
5 2 01/02/2011 1
查询结果:
订单 ID 状态
1 2
2 2
3 3
(OrderID 2 具有状态 2,因为它有两个事件,3 和 5,其中最新的是具有状态 …
在 RS 报告中,我有一个矩阵,其 LayoutDirection 属性设置为 RTL(因为它是希伯来语)。我通过从数据集字段列表中拖动字段并将其放入矩阵的列标题中来创建列组。所以列的数量是可变的(这是可以的)。
当我查看报告时,列的顺序是正确的(从右到左)。但问题是矩阵向右增长并且总是向左对齐。该报告是 RTL,所以我需要解决方法,即我希望矩阵向右对齐并向左增长。
我找不到修复它的方法。你能帮我解决这个问题吗?谢谢。
我有一个简单的F#以下类型的记录数组(或依赖于系统类型的一些小变化):
type Transaction= {
date: DateTime;
amount: float;
mutable details: string }
Run Code Online (Sandbox Code Playgroud)
我想将它们显示到Winforms中的DataGridView控件,包括支持更改内容,添加或删除行/记录.将DataViewGrid绑定到记录数组似乎不允许添加/删除行(或者我必须做错了吗?).但是,DataTable结构似乎更适合此目的.创建上述类型的DataTable似乎与原始记录类型完全匹配,例如:
let dataTable = new DataTable()
dataTable.Columns.Add("date", typeof<DateTime>) |> ignore
dataTable.Columns.Add("amount", typeof<float>) |> ignore
dataTable.Columns.Add("details", typeof<string>) |> ignore)
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有一个现有的系统函数将依赖于系统类型的任何类型的记录转换为记录数组(例如,键入"事务数组")到相应的DataTable中,反之亦然?如果没有这样的功能,怎么能以简洁的方式完成呢?
在我的项目中有三个报告 - 主报告和两个子报告,每个报告都有自己的数据集(所有数据集共有的唯一列是ItemID).主报告将ItemID作为参数传递给它的两个子报告中的每一个.
主报表以类似于表单的布局构建,即我使用List控件并在List主体内排列主报表字段.(我每次只需要显示一条记录,所以我选择了List而不是Table或Matrix.)
如果我将其中一个子报表添加到主报表正文(即在List正文中),它就可以正常工作.但是,如果我尝试将其他子报表添加到主报表中,则数据仅显示在子报表中,而主报表的字段为空(不显示主报表数据集中的数据).我不明白为什么会这样.
这可能是什么问题?
我会感激任何帮助.
我创建了四个TextBoxes(按此顺序:textBox1,, textBox2...)并将它们放在另一个下面GroupBox.然后我添加了Click事件:
private void button1_Click(object sender, EventArgs e)
{
foreach (TextBox tb in groupBox1.Controls.OfType<TextBox>())
{
if (string.IsNullOrWhiteSpace(tb.Text))
{
Console.WriteLine(tb.Name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序并单击Button(当所有TextBoxes为空时),这是我得到的输出:
textBox4
textBox3
TextBox2中
textBox1的
显然,foreach循环GroupBox以相反的顺序迭代控件.我希望它能够实现textBox1,textBox4因为这是他们创建并放入组合框的顺序.
为什么foreach循环反向?只是好奇...
winforms ×4
c# ×2
datagridview ×2
vb.net ×2
combobox ×1
contextmenu ×1
data-binding ×1
datatable ×1
events ×1
f# ×1
foreach ×1
right-click ×1
sql ×1
ssrs-2008 ×1
ssrs-tablix ×1
subreports ×1