可以使用Windows窗体中的表作为矩阵吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了可以使用Windows窗体中的表作为矩阵吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2540字,纯文字阅读大概需要4分钟。
内容图文
![可以使用Windows窗体中的表作为矩阵吗?](/upload/InfoBanner/zyjiaocheng/948/8e00e983a65d4ab0b0178a3290007892.jpg)
我正在尝试创建一个简单的6X8单元格矩阵,用户可以在其中单击一个单元格并将其打开或关闭(黑色或白色).我一直在尝试Windows窗体控件,并查看了“数据”网格控件,但是到目前为止,我还没有看到在Winforms工具框中使用任何东西来创建矩阵的方法.
我创建了表格,但是看不到一种单独设置每个单元格样式的方法,或者为每个单元格使用onclick事件.如果没有的话,这是否可能呢?
解决方法:
这是在运行时创建标签的解决方案.您需要一个面板来承载“矩阵”和一个按钮,所有这些都具有默认名称.该按钮将在单击时绘制一个棋盘格,您可以通过单击每个单元格来翻转颜色.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const int RowCount = 6;
const int ColumnCount = 8;
private void button1_Click(System.Object sender, System.EventArgs e)
{
for (int i = 0; i < RowCount; i++)
{
for (int j = 0; j < ColumnCount; j++)
{
Label lbl = new Label();
lbl.Size = new Size(20, 20);
lbl.Location = new Point(i * 20, j * 20);
lbl.BackColor = (i + j) % 2 == 0 ? Color.Black : Color.White;
lbl.Click += lbl_Click;
panel1.Controls.Add(lbl);
}
}
MessageBox.Show(CountCellsOfColor(Color.Black).ToString());
}
private int CountCellsOfColor(Color color)
{
int count = 0;
foreach (Label lbl in panel1.Controls.OfType<Label>())
{
if (lbl.BackColor == color) count += 1;
}
return count;
}
private void lbl_Click(object sender, System.EventArgs e)
{
Label lbl = (Label)sender;
Color color = lbl.BackColor;
if (color == System.Drawing.Color.Black)
{
color = System.Drawing.Color.White;
}
else
{
color = System.Drawing.Color.Black;
}
lbl.BackColor = color;
}
}
VB.NET版本(原始版本,后来转换为C#,但决定保留以防万一有人需要它):
Option Strict On
Public Class Form1
Const RowCount As Integer = 6
Const ColumnCount As Integer = 8
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
For i = 0 To RowCount - 1
For j = 0 To ColumnCount - 1
Dim lbl As New Label
lbl.Size = New Size(20, 20)
lbl.Location = New Point(i * 20, j * 20)
lbl.BackColor = If((i + j) Mod 2 = 0, Color.Black, Color.White)
AddHandler lbl.Click, AddressOf lbl_Click
Panel1.Controls.Add(lbl)
Next
Next
MessageBox.Show(CountCellsOfColor(Color.Black))
End Sub
Private Function CountCellsOfColor(color As Color) As Integer
Dim count As Integer = 0
For Each lbl In Panel1.Controls.OfType(Of Label)()
If lbl.BackColor = color Then count += 1
Next
Return count
End Function
Private Sub lbl_Click(sender As Object, e As System.EventArgs)
Dim lbl As Label = CType(sender, Label)
Dim color As Color = lbl.BackColor
If color = Drawing.Color.Black Then
color = Drawing.Color.White
Else
color = Drawing.Color.Black
End If
lbl.BackColor = color
End Sub
End Class
内容总结
以上是互联网集市为您收集整理的可以使用Windows窗体中的表作为矩阵吗?全部内容,希望文章能够帮你解决可以使用Windows窗体中的表作为矩阵吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。