zoukankan      html  css  js  c++  java
  • 添加一个下拉框到DataGrid

    form1.vb
    Imports System.Data.SqlClient

    Public Class Form1

        
    Public MyCombo As New ComboBox()

        
    Dim con As New SqlConnection("server=GUOXH\SQLEXPRESS;uid=sa;pwd=1234567;database=northwind")

        
    Dim daEmp As New SqlDataAdapter("Select * From Employees", con)



        
    Public ds As New DataSet()


        
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            
    AddHandler MyCombo.TextChanged, AddressOf Ctrls_TextChanged
            
    'Fill ComboBox list.

            MyCombo.Name 
    = "MyCombo"

            MyCombo.Visible 
    = False

            MyCombo.Items.Clear()

            MyCombo.Items.Add(
    "Sales Representative")

            MyCombo.Items.Add(
    "Inside Sales Coordinator")

            MyCombo.Items.Add(
    "Vice President, Sales")

            MyCombo.Items.Add(
    "Sales Manager")

            MyCombo.Items.Add(
    "Flunky")





            daEmp.Fill(ds, 
    "Employees")



            
    'Set the RowHeight of the DataGrid to the height of the ComboBox.

            DataGrid1.PreferredRowHeight 
    = MyCombo.Height



            DataGrid1.DataSource 
    = ds



            DataGrid1.DataMember 
    = "Employees"

            
    'Add ComboBox to the Control collection of the DataGrid.

            DataGrid1.Controls.Add(MyCombo)
        
    End Sub


        
    Private Sub DataGrid1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGrid1.Paint
            
    If DataGrid1.CurrentCell.ColumnNumber = 3 Then

                MyCombo.Width 
    = DataGrid1.GetCurrentCellBounds.Width

            
    End If
        
    End Sub


        
    Private Sub Ctrls_TextChanged(ByVal sender As ObjectByVal e As System.EventArgs)

            
    If DataGrid1.CurrentCell.ColumnNumber = 3 Then

                MyCombo.Visible 
    = False

                
    If DataGrid1.Item(DataGrid1.CurrentCell) & "" = "" Then

                    SendKeys.Send(
    "*")

                
    End If

                DataGrid1.Item(DataGrid1.CurrentCell) 
    = MyCombo.Text

            
    End If

        
    End Sub


        
    Private Sub DataGrid1_CurrentCellChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
            
    If DataGrid1.CurrentCell.ColumnNumber = 3 Then

                MyCombo.Visible 
    = False

                MyCombo.Width 
    = 0

                MyCombo.Left 
    = DataGrid1.GetCurrentCellBounds.Left

                MyCombo.Top 
    = DataGrid1.GetCurrentCellBounds.Top

                MyCombo.Text 
    = DataGrid1.Item(DataGrid1.CurrentCell) & ""

                MyCombo.Visible 
    = True

            
    Else

                MyCombo.Visible 
    = False

                MyCombo.Width 
    = 0

            
    End If

        
    End Sub


        
    Private Sub DataGrid1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll
            MyCombo.Visible 
    = False

            MyCombo.Width 
    = 0

        
    End Sub


        
    Private Sub DataGrid1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.Click
            MyCombo.Visible 
    = False

            MyCombo.Width 
    = 0

        
    End Sub

    End Class

    Form1.Designer.vb
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Partial 
    Class Form1
        
    Inherits System.Windows.Forms.Form

        
    'Form 重写 Dispose,以清理组件列表。
        <System.Diagnostics.DebuggerNonUserCode()> _
        
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            
    If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            
    End If
            
    MyBase.Dispose(disposing)
        
    End Sub


        
    'Windows 窗体设计器所必需的
        Private components As System.ComponentModel.IContainer

        
    '注意: 以下过程是 Windows 窗体设计器所必需的
        '可以使用 Windows 窗体设计器修改它。
        '不要使用代码编辑器修改它。
        <System.Diagnostics.DebuggerStepThrough()> _
        
    Private Sub InitializeComponent()
            
    Me.DataGrid1 = New System.Windows.Forms.DataGrid
            
    CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
            
    Me.SuspendLayout()
            
    '
            'DataGrid1
            '
            Me.DataGrid1.DataMember = ""
            
    Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
            
    Me.DataGrid1.Location = New System.Drawing.Point(1212)
            
    Me.DataGrid1.Name = "DataGrid1"
            
    Me.DataGrid1.Size = New System.Drawing.Size(659435)
            
    Me.DataGrid1.TabIndex = 0
            
    '
            'Form1
            '
            Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
            
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
            
    Me.ClientSize = New System.Drawing.Size(683482)
            
    Me.Controls.Add(Me.DataGrid1)
            
    Me.Name = "Form1"
            
    Me.Text = "Form1"
            
    CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
            
    Me.ResumeLayout(False)

        
    End Sub

        
    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid

    End Class

  • 相关阅读:
    C++ Operate FTP
    md /mdd /ml /mt/mtd
    从MySpace基于.NET平台的六次重构经历,来感受分布式系统。
    分布式缓存BeIT Memcached简介
    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?
    马云飞机上写长贴:再一次和新同事们谈谈看法
    memcached完全剖析
    ESET ESS/EAV 5 正式版 中英文32/64位 (注册版) 下载
    Windows下的.NET+ Memcached安装
    在 ASP.NET 環境下使用 Memcached 快速上手指南
  • 原文地址:https://www.cnblogs.com/gxh973121/p/442208.html
Copyright © 2011-2022 走看看