【Visual Basic】列表控制元件ListView的增刪改查、模態對話方塊、禁止視窗調整大小
列表控制元件ListView是窗體中核心元件之一,在各種窗體程式得到廣泛應用。在《【mfc】學生資訊管理,實現List控制元件節點的增刪改查》(點選開啟連結)中極其難以實現列表控制元件ListView的增刪改查,在vb中可以輕鬆實現,下面舉一個列子來說明這個問題。
如上圖的一個ListView控制元件,點選“新增”按鈕,在彈出的模態視窗,可以為ListView控制元件新增相應的項。
通過“刪除”按鈕可以刪除選中的項。通過“修改”按鈕,選中的項的值將會傳遞到模態視窗,通過修改模態視窗的值。能夠修改相應列的內容。
製作過程:
一、控制元件佈局與屬性設定
1、新建一個vb工程,裡面已經自帶一個Form1窗體,在於裡面新增一個Form2窗體
2、如下圖所示佈局,在Form1中拖入3個按鈕,與一個ListView控制元件。點選Form1窗體,禁用Form1的最大化按鈕。同時記下此時Form1的Size,一會要寫入指令碼。
3、對於Form1的ListView1屬性,將其Modifiers從預設的Friends改為Public,以便於Form2的指令碼能操控它。否則只能在Form1的指令碼中操控此控制元件。
4、在Form2中,如下圖所示佈局,拖入三個標籤文字Label,三個文字框Textbox,一個Button1按鈕。將三個文字框Textbox的Modifiers從預設的Friends改為Public,以便於Form1的指令碼能夠操控這三個文字框。同時,對於Form2這個窗體,與Form1同樣設定,禁用最大化按鈕,同時記錄下Form2的Size
二、指令碼程式設計
1、雙擊Form1窗體、三個按鈕,編寫如下的指令碼。
其核心思想是,
(1)禁止Form1被調節大小,一旦Form1的大小被調整,則馬上回復我們設定好的Size
(2)Form1窗體載入的時候,設定好ListView與三個Button的基本屬性。
(3)“新增”按鈕Button1點選的時候,將Form2的全域性變數selectItemIndex設定為“新增”狀態。此處的selectItemIndex=-1以為沒有選擇的項。區別於“修改”按鈕Button3被點選的時候,將選擇項的索引值通過修改全域性變數的方式,送到Form2
(4)對於“刪除”按鈕,就是找出被選擇的項,將其刪除。
Public Class Form1
'禁止調整窗體大小指令碼
'此處無法通過Me.Width與Me.Height來取出當前窗體的寬,在窗體未完成載入之前,此值固定為系統的窗體預設值,win7為300
'因此,手動設定好當前窗體的寬與高,就是窗體編輯區的Form1中的Size屬性
Dim form_width As Integer = 275
Dim form_height As Integer = 226
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.Width <> form_width Then
Me.Width = form_width
End If
If Me.Height <> form_height Then
Me.Height = form_height
End If
End Sub
'程式開始的指令碼
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "ListView控制元件的增刪改查"
ListView1.View = View.Details '設定ListView1的樣式
ListView1.FullRowSelect = True '選擇的時候,整行都被塗黑
ListView1.MultiSelect = False '禁止選擇多項
'設定各列的列名、寬度,因為這裡有3項,因此,寬度為當前ListView的寬度的三分之一。各減3畫素是放置出現橫向滾動條不美觀
ListView1.Columns.Add("列1", CInt(ListView1.Width / 3) - 3)
ListView1.Columns.Add("列2", CInt(ListView1.Width / 3) - 3)
ListView1.Columns.Add("列3", CInt(ListView1.Width / 3) - 3)
'按鈕的設定
Button1.Text = "新增"
Button2.Text = "刪除"
Button3.Text = "修改"
End Sub
'“新增”按鈕指令碼
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.selectItemIndex = -1 '標示當前行為:“新增”
Form2.ShowDialog() '窗體Form2以模態對話方塊的方式所開啟
End Sub
'“刪除”按鈕指令碼
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If ListView1.SelectedItems.Count > 0 Then
'求出當前選擇的項,並刪除
Dim selectItemIndex As Integer = ListView1.SelectedItems.Item(ListView1.SelectedItems.Count - 1).Index
ListView1.Items.Item(selectItemIndex).Remove()
Else
MsgBox("請選擇其中的一項!")
End If
End Sub
'“修改”按鈕指令碼
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If ListView1.SelectedItems.Count > 0 Then
'求出當前選擇的項
Dim selectItemIndex As Integer = ListView1.SelectedItems.Item(ListView1.SelectedItems.Count - 1).Index
Form2.selectItemIndex = selectItemIndex
'將其值賦予Form2的各個對話方塊
Form2.TextBox1.Text = ListView1.Items.Item(selectItemIndex).SubItems(0).Text
Form2.TextBox2.Text = ListView1.Items.Item(selectItemIndex).SubItems(1).Text
Form2.TextBox3.Text = ListView1.Items.Item(selectItemIndex).SubItems(2).Text
Form2.ShowDialog() '窗體Form2以模態對話方塊的方式所開啟
Else
MsgBox("請選擇其中的一項!")
End If
End Sub
End Class
2、雙擊Form2窗體與Form1中的Button1,寫入如下指令碼。
基本思想是:
(1)與Form1同樣,禁止使用者調整此窗體Form2的大小
(2)在Form2被開啟的時候,根據Form1使用者點選的按鈕時,所定義selectItemIndex全域性變數的值,設定Button1是顯示“新增”還是"修改"
(3)Form2的Button1被點選的時候,根據selectItemIndex的值,實行“新增”與“修改”動作。
Public Class Form2
'禁止調整窗體大小指令碼
'此處無法通過Me.Width與Me.Height來取出當前窗體的寬,在窗體未完成載入之前,此值固定為系統的窗體預設值,win7為300
'因此,手動設定好當前窗體的寬與高,就是窗體編輯區的Form2中的Size屬性
Dim form_width As Integer = 195
Dim form_height As Integer = 176
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
If Me.Width <> form_width Then
Me.Width = form_width
End If
If Me.Height <> form_height Then
Me.Height = form_height
End If
End Sub
Public selectItemIndex As Integer '供Form1所控制的全域性變數,用於判斷是修改,還是新增項
'此模態對話方塊載入的動作
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = "列1:"
Label2.Text = "列2:"
Label3.Text = "列3:"
If selectItemIndex = -1 Then
Button1.Text = "新增"
Else
Button1.Text = "修改"
End If
End Sub
'Button1被點選的時候動作
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If selectItemIndex = -1 Then '新增
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then
MsgBox("列1、列2、列3任意一項不能為空!")
Else
Dim item As ListViewItem = Form1.ListView1.Items.Add(TextBox1.Text)
Dim tStrings(2) As String
tStrings(0) = TextBox2.Text
tStrings(1) = TextBox3.Text
item.SubItems.AddRange(tStrings)
Me.Close()
End If
Else '修改
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then
MsgBox("列1、列2、列3任意一項不能為空!")
Else
Form1.ListView1.Items.Item(Me.selectItemIndex).SubItems(0).Text = TextBox1.Text
Form1.ListView1.Items.Item(Me.selectItemIndex).SubItems(1).Text = TextBox2.Text
Form1.ListView1.Items.Item(Me.selectItemIndex).SubItems(2).Text = TextBox3.Text
Me.Close()
End If
End If
End Sub
End Class
相關推薦
【Visual Basic】列表控制元件ListView的增刪改查、模態對話方塊、禁止視窗調整大小
列表控制元件ListView是窗體中核心元件之一,在各種窗體程式得到廣泛應用。在《【mfc】學生資訊管理,實現List控制元件節點的增刪改查》(點選開啟連結)中極其難以實現列表控制元件ListView的增刪改查,在vb中可以輕鬆實現,下面舉一個列子來說明這個問題。 如上圖
【Asp.Net】登陸註冊+sql server增刪改查 小demo
由於只注重主要功能實現,並未優化前端頁面,所以看起來比較原始。 採用webform技術 三層架構 + webform顯示 Models層,資料模型層 BLL層,業務邏輯層 reference Models and DAO DAO層,資料訪問層 reference M
【ASP.NET】——複合控制元件之TreeView控制元件
在ASP.NET中常用的複合控制元件有:TreeView控制元件,MultiView控制元件,JavaScript方式的選項卡,WiZard控制元件。 今天先來學習TreeView控制元件。 在開發過程中經常會遇到一些有樹形層次關係的資料,比如顯示無限極分類和顯示某個檔案下的所有檔案及資
【第八節】PyQt5控制元件(II)
在這裡我們將繼續介紹PyQt5控制元件。我們將介紹QPixmap、QLineEdit QSplitter,QComboBox。 QPixmap QPixmap是用於處理影象的控制元件。是優化的顯示影象在螢幕上。在我們的程式碼示例中,我們將使用QPixmap視窗顯示一個影象
【小程式】讓控制元件隱藏或者顯示
最開始寫的時候運用新增class的方法,舉例:test.wxml: <view class=" {{showOrHidden?'show':'hide'}}">+++++++++++++</view>test.wxss:.hide { displa
列表控制元件ListView和介面卡Adapter
學習筆記 一個ListView通常有兩個職責: (1)將資料填充到佈局 (2)處理使用者的選擇點選等操作 一個ListView建立需要3個元素: (1)ListView中每一列的View;(2)填入View的資料或圖片等;(3)連結資料與ListView的介面卡。 介面卡
【.net基礎】--DropDownList控制元件:兩級聯動
最近學習Asp.Net,發現很多控制元件都很有意思,例如:Canlender,AdRotator等。以前只知道有這樣的頁面效果,但是對這些控制元件瞭解並不多。不怕不知道,就怕不知道。
【Qt開發】佈局控制元件之間的間距設定
void QLayout::setContentsMargins ( int left, int top, int right, int bottom ) Sets the left, top, right, and bottom margins to use ar
【android應用】——設定控制元件的透明度
1、Button或者ImageButton的背景透明或者半透明 半透明:<Button android:background="#e0000000"···> 透明:<Button android:background="#00000000"···&
【asp.net】使用者控制元件&自定義控制元件
在原來的學習中,從vb到asp.net我們都接觸了很多的控制元件,這些控制元件為我們的程式開發提供了很多的便利,在程式開發中,許多功能或程式碼都需要重複的使用,我們在牛腩的時候學習了模板方法和
【VB.net】DataGridView控制元件的使用
VS中的DataGridView控制元件,在機房重構裡的出鏡率還是很高噠~這篇部落格就把一些有關DataGridView 控制元件的一些使用細節和大家分享一下! 找到控制元
【2048小遊戲】——CSS/原生js爬坑之純CSS模態對話框&遊戲結束
函數 一半 窗口 內容 href 標準 tex true 存儲空間 引言:2048小遊戲的結束界面,使用純CSS制作模態對話框,一般做模態對話框都會使用BootStrap自帶的模態對話框組件方便使用,但在制作要運行在移動端的小項目時,就不能使用BootStrap,因為文件太
【MFC】 如何通過主對話方塊的按鈕響應建立非模態對話方塊
1.首先新建一個對話方塊IDD_DIALOG_Create, 並新增類CDialog_Create。 //在工程中會新生成一個Dialog_Create.h標頭檔案和一個Dialog_Create.CPP原始檔。 2.在主對話方塊的標頭檔案SerialDlg.h
【筆記】爬蟲+資料庫操作(增刪改查)
基本操作: import pymysql #匯入模組 conn =pymysql.connect( host ='127.0.0.1', port =3307, user ='root', passwd='xhdake',
VUE餓了麼樹形控制元件新增增刪改功能
轉自:https://segmentfault.com/a/1190000011574698#articleHeader2 element-ui樹形控制元件:地址 在原文件中有個案例是有新增和刪除功能,但是後來發現其修改的資料並不能直接影響到樹形資料,所以採用了 rende
VS2010中新控制元件的程式設計------顏色按鈕類和顏色對話方塊
(1) 顏色按鈕類和顏色對話方塊 1) 顏色對話方塊 MFC提供了顏色對話方塊類CMFCColorDialog進行顏色的選擇,系統可以利用DoModal()呼叫,然後選擇相應的顏色。 CMFCColorDialog dlg(m_Color,0, this);
【jQuery】對網頁節點的增刪改查
本文與《【JavaScript】網頁節點的增刪改查》(點選開啟連結)為姊妹篇,其實JavaScript對DOM的操作已經總結了很久的,而對於jQuery對網頁節點的操作,雖然一直在用,但一直沒有好好總結一下,實在是不應該。 下面舉同樣的例子來說明這個問題: 如上圖,提供3
【PostgreSQL】PostgreSQL hstore型別資料增刪改查
1、登陸資料庫 psql -U postgres -d postgres 2、建立資料庫hstore,並安裝extensio
QML實現可定製模態對話方塊【核心部分詳解】
轉自 http://blog.csdn.net/r5014/article/details/70139689
Python的列表類型操作——“增刪改查”,元組——“查”
增刪 mov 增刪改 常用 元組 for range 對象 嵌套 一、什麽是列表 1.列表是一個可變的數據類型,它由[]表示,其中的每一項元素使用“,”逗號隔開,可以儲存各種數據類型。列表相比於字符串,可以存放大量數據類型,其是有序的,有索引,可以使用切片,方便取值。