我想创建这个视图。但我不知道如何制作这种按钮,用C#可行吗?如果是这样,请帮助我。如何在C#中的列中创建切换按钮?
0
A
回答
1
对于ListView控件,你可以得到的东西,通过
- 分裂看起来像你的图像数据到
Text
和各Item/Subitem
- 所有者绘制
ListView
- 的
Tags
存储两个图像(包括净空)在两个Bitmaps
。 - 编码的
MouseDown
事件带来的“按钮”住
这里是业主绘制的代码。
private void listView3_DrawItem(object sender, DrawListViewItemEventArgs e)
{
Rectangle textBounds = e.Bounds; textBounds.Height /= 2;
e.Graphics.DrawImage(e.Item.Text == "True" ? bmpOn : bmpOff, e.Bounds.Location);
TextRenderer.DrawText(e.Graphics, e.Item.Tag.ToString(),
Font, textBounds, Color.Black, TFFcenter);
}
private void listView3_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
Rectangle textBounds = e.Bounds; textBounds.Height /= 2;
e.Graphics.DrawImage(e.SubItem.Text == "True" ? bmpOn : bmpOff, e.Bounds.Location);
TextRenderer.DrawText(e.Graphics, e.SubItem.Tag.ToString(),
Font, textBounds, Color.Black, TFFcenter);
}
private void listView3_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}
处理点击一个ListView
的代码很简单,但并不明显:
private void listView3_MouseDown(object sender, MouseEventArgs e)
{
ListViewHitTestInfo HI = listView3.HitTest(e.Location);
if (HI.SubItem != null) HI.SubItem.Text = HI.SubItem.Text == "True" ? "False" : "True";
else if (HI.Item != null) HI.Item.Text = HI.Item.Text == "True" ? "False" : "True";
}
的DrawText
呼叫使用TextFormatFlags
居中的上半部分的文字:
TextFormatFlags TFFcenter =
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter;
的绝招是在准备整个ListView
。
对于我的测试,我用这个程序:
ImageList il = new ImageList();
il.ImageSize = new Size(1, bmpOff.Height);
listView3.SmallImageList = il;
for (int c = 0; c < listView3.Columns.Count; c++)
listView3.Columns[c].Width = bmpOff.Width;
for (int i = 0; i < listView3.Columns.Count; i++)
{
ListViewItem lvi = new ListViewItem((i % 2 == 0).ToString());
for (int c = 0; c < 5; c++)
{
lvi.SubItems.Add(((c+i) % 2 == 0).ToString());
lvi.SubItems[c].Tag = "3/7";
}
lvi.Tag = "3/7";
listView3.Items.Add(lvi);
}
listView3.Width = listView3.Columns.Count * bmpOff.Width + 4;
注意我如何使用虚拟ImageList
,而你在它执行Item
heights..but,它可能是一个更好的主意来添加ImageList
在设计和存储在其中的Bitmaps
..
当您要访问/更改上面你需要使用的各个Item/Subitem
的Tag
的按钮显示的文本..!
也可以使用DataGridView
,并通过单元格绘画获得相同的外观。
请注意,没有任何解决方案适合数据绑定,因为您有太多数据无法绑定每个项目/单元格!
0
在Windows窗体中。 (它看起来像你正在使用的。)你可以在表单上放置一个DataGridView,并将GridView设计器中的ColumnType改为DataGridViewCheckBoxColumn。这会给你你正在寻找的功能。换句话说,如果你不介意外观,(但是需要相同的功能),你可以在网格中使用复选框。
当您具有正确的功能时:您可以使用Gnqz的上述答案来获取按钮的外观。
相关问题
- 1. 如何在动态呈现列表中创建切换按钮
- 2. 如何在AS3中创建可重用的切换按钮?
- 3. 如何在jQuery中创建切换按钮
- 4. 如何在html中创建3个切换按钮
- 5. 如何在Jquery-mobile中创建切换按钮?
- 6. 如何在sprite工具包中创建按钮iOS(类似于切换按钮)
- 7. 在PyQt中切换按钮
- 8. 在ASP.NET中切换按钮
- 9. 在C#中创建/切换桌面。Net
- 10. 如何创建一个带3个选项的切换按钮...?
- 11. 如何在iPad中创建像按钮之类的按钮以在视图之间切换
- 12. 如何在asp.net中动态创建radgrid中的按钮列?
- 13. 如何切换按钮?
- 14. 如何创建类似于Twitter应用程序位置切换按钮的切换按钮?
- 15. 如何使用.. jquery和vb.net创建切换按钮?
- 16. 如何使用JQuery创建切换按钮?
- 17. 如何使用键盘控件创建切换按钮?
- 18. 如何有效地创建100个切换图像按钮?
- 19. 如何在块中创建按钮?
- 20. 如何在javascript中创建flash按钮
- 21. 如何在cocos2d中创建按钮?
- 22. 如何在WebOS中创建按钮?
- 23. 在ListView中的行与切换按钮
- 24. 如何使用切换按钮建立字符串列表
- 25. 切换按钮样式只能在最后的切换按钮
- 26. 切换按钮不切换
- 27. 如何在C++中创建不规则形状的按钮?
- 28. 在列表中创建一个像按钮的按钮
- 29. 切换按钮
- 30. 如何在datagridview中动态创建按钮列的button_click函数
使用wpf或表单? –
@Rasmus,With forms –
现在的问题是:'Column'是什么意思?你的每个按钮都有一个bool,但它上面还有某种字符串,或者可能是两个数字?所以:你想在哪里存储这些数据?显示两个开/关位图并不困难,但您需要决定使用哪些控件。 – TaW