C#中如何定义内存表绑定DataGrid的简单实例

实例代码如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

namespace ListViewDemo
{
    
/// <summary>
    
/// Form1 的摘要说明。
    
/// </summary>

    public class DemoForm : System.Windows.Forms.Form
    
{
        
private System.Windows.Forms.ListView lvw;
        
private System.Windows.Forms.ImageList ilsLargeIcons;
        
private System.Windows.Forms.ImageList ilsSmallIcons;
        
private System.Windows.Forms.ComboBox cboView;
        
private System.Windows.Forms.ColumnHeader columnHeader1;
        
private System.Windows.Forms.ColumnHeader columnHeader2;
        
private System.Windows.Forms.ColumnHeader columnHeader3;
        
private System.Windows.Forms.ColumnHeader columnHeader4;
        
private System.Windows.Forms.ColumnHeader columnHeader5;
        
private System.Windows.Forms.ColumnHeader columnHeader6;
        
private System.ComponentModel.IContainer components;
        
private System.Windows.Forms.Button btnUse;
        
private System.Windows.Forms.Button btnLeave;

        
private ListViewItem itmX;
        
private System.Windows.Forms.Button btnStat;
        
const int MoneyPerHour=2;

        
public DemoForm()
        
{
            
//
            
// Windows 窗体设计器支持所必需的
            
//
            InitializeComponent();

            
//
            
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
            
//
        }


        
/// <summary>
        
/// 清理所有正在使用的资源。
        
/// </summary>

        protected override void Dispose( bool disposing )
        
{
            
if( disposing )
            
{
                
if (components != null
                
{
                    components.Dispose();
                }

            }

            
base.Dispose( disposing );
        }


        
Windows 窗体设计器生成的代码

        
/// <summary>
        
/// 应用程序的主入口点。
        
/// </summary>

        [STAThread]
        
static void Main() 
        
{
            Application.Run(
new DemoForm());
        }


        
private void DemoForm_Load(object sender, System.EventArgs e)
        
{
            lvw.SmallImageList
=ilsSmallIcons;
            
for (int i=1;i<=30;i++)
            
{
                itmX
=lvw.Items.Add(i.ToString(),0);  //Add方法返回新增的ListViewItem对象
                itmX.SubItems.Add("未使用");
                itmX.SubItems.Add(
"");
                itmX.SubItems.Add(
"");
                itmX.SubItems.Add(
"");
                itmX.SubItems.Add(
"");

            }


            cboView.SelectedIndex
=1;
        }


        
private void cboView_SelectedIndexChanged(object sender, System.EventArgs e)
        
{
            lvw.View
=(View)cboView.SelectedIndex;
        }


        
private void btnUse_Click(object sender, System.EventArgs e)
        
{
            
if (lvw.SelectedItems.Count>0)
            
{
                itmX
=lvw.SelectedItems[0];
                
if (MessageBox.Show("确定使用" + itmX.Text + "号计算机吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
                
{
                    itmX.SubItems[
2].Text=DateTime.Now.ToString();
                    itmX.SubItems[
1].Text="使用中";
                    itmX.ImageIndex
=1;
                    itmX.SubItems[
3].Text="";
                    itmX.SubItems[
4].Text="";
                    itmX.SubItems[
5].Text="";
                    lvw_SelectedIndexChanged(lvw,EventArgs.Empty);
                }

            }

        }


        
private void btnLeave_Click(object sender, System.EventArgs e)
        
{
            
if (lvw.SelectedItems.Count>0)
            
{
                itmX
=lvw.SelectedItems[0];
                
if (MessageBox.Show("确定不再使用" + itmX.Text + "号计算机吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
                
{
                    itmX.SubItems[
3].Text=DateTime.Now.ToString();
                    itmX.SubItems[
1].Text="未使用";
                    itmX.ImageIndex
=0;
                    TimeSpan ts
=DateTime.Now-DateTime.Parse(itmX.SubItems[2].Text);
                    itmX.SubItems[
4].Text=ts.Hours + "小时" + ts.Minutes + "";
                    
                    
int hours=ts.Hours;
                    
if (ts.Minutes>0) hours++;//不足一小时按一小时计算

                    itmX.SubItems[
5].Text=hours*MoneyPerHour + "";

                    lvw_SelectedIndexChanged(lvw,EventArgs.Empty);
                    SqlConnection cn
=DBOperate.GetConnection();
                    
try
                    
{
                        cn.Open();
                        SqlCommand cmd
=new SqlCommand("Insert into UsingDetails Values(@ComputerNo, @StartTime, @EndTime, @TotalMoney)",cn);
                        cmd.Parameters.Add(
"@ComputerNo",int.Parse(itmX.Text));
                        cmd.Parameters.Add(
"@StartTime",DateTime.Parse(itmX.SubItems[2].Text));
                        cmd.Parameters.Add(
"@EndTime",DateTime.Now);
                        cmd.Parameters.Add(
"@TotalMoney",(decimal)(hours*MoneyPerHour));
                        cmd.ExecuteNonQuery();
                    }

                    
finally
                    
{
                        cn.Close();
                    }

                }

            }

        }


        
private void btnStat_Click(object sender, System.EventArgs e)
        
{
            StatForm frmStat
=new StatForm();
            frmStat.ShowDialog();
        }


        
private void lvw_SelectedIndexChanged(object sender, System.EventArgs e)
        
{
            
if (lvw.SelectedItems.Count>0)
            
{
                
if (lvw.SelectedItems[0].ImageIndex==0)
                
{
                    btnUse.Enabled
=true;
                    btnLeave.Enabled
=false;
                }

                
else
                
{
                    btnUse.Enabled
=false;
                    btnLeave.Enabled
=true;
                }

            }

        }

    }

}

 这个实例基本上包含了ListView常用方法和属性,最主要的就是要明白ListView中包含的都是ListViewItem对象。

原文地址:https://www.cnblogs.com/chenbg2001/p/1351887.html