Video Xóa dữ liệu trong ListBox C# 2022

image 1 1859

Mẹo về Xóa tài liệu trong ListBox C# 2022

Bạn đang tìm kiếm từ khóa Xóa tài liệu trong ListBox C# được Cập Nhật vào lúc : 2022-12-21 14:13:09 . Với phương châm chia sẻ Bí kíp về trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi đọc tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comments ở cuối bài để Ad lý giải và hướng dẫn lại nha.

Bạn cần đăng nhập để thấy linkỞ đây em có một userform như trong file đính kèm. Em muốn những anh/ chị giúp sức em với nội dung như sau:
– Ở nút “THÊM MỚI” OptionButton1 và OptionButton2 em muốn khi chọn thì tài liệu dc chọn sẽ thêm vào cột G
– Listbox1: Hiển thị toàn bộ tài liệu theo dòng và cột ở Table1 trong sheet2 với Đk cột G (Tình trạng NK) là chưa nhập kho. Tức chỉ hiển thị tài liệu theo dòng và cột của Table1 với Đk cột G là chưa nhập kho
– Bình thường listbox1 chỉ để xem. Khi ấn “SỬA” thì sẽ chọn được tài liệu trong listbox. Khi clickduple vào 1 dòng tài liệu trong listbox1 thì tài liệu sẽ lấy từ listbox xuống những textbox, combobox,OptionButton tương ứng. Và sẽ sửa tài liệu tại những textbox, combobox,OptionButton.
Bấm “CẬP NHẬP” Thì tài liệu vừa sửa sẽ cập nhập vào Table1 trong excel tại dòng cột tương ứng
Bấm “XÓA” thì sẽ xóa dòng tài liệu dc chọn tại listbox đồng thời xóa dòng tài liệu tương ứng trong Table1 trong excelBạn nên xem lại cách trình diễn, tôi giúp bạn lần này, lần sau nỗ lực trình diễn sao cho dễ hiểu, nên bớt chút thời hạn ra tâm ý.
Dưới đấy là vài điểm mà bạn hoàn toàn có thể cải tổ để nội dung bài viết rõ ràng ý tưởng thiết kế.
1. File có hai sheet Data, và sheet 2: Người dùng sẽ hỏi, vậy tài liệu cần nhập vào sheet nào?
Tôi phán đoán: Sheet 2.
2. OptionButton1 Và OptionButton2 là gì? Làm thế nào để bất kể ai cũng hiểu được? Trong trường hợp này, nên dùng hình ảnh minh họa, để mọi người nhìn vào hiểu được ngay câu truyện của bạn.
Bạn cần đăng nhập để thấy đính kèm
Ở đây có vướng mắc tiếp theo: Nếu không còn OptionButton nào được tích chọn, người tiêu dùng ấn nút THÊM MỚI thì nội dung khi đó là gì, hoặc chương trình xử lý ra làm sao, chưa thấy bạn nhắc tới.
Tất nhiên tôi cũng hoàn toàn có thể phán đoán, có lẽ rằng mong ước chương trình sẽ báo lỗi ra làm sao đó, tuy nhiên đấy là việc làm của bạn, bạn là người thiết kế, bạn chưa nên phải ghi nhận code. Và riêng với những người thiết kế, hãy đưa ra ý tưởng rõ ràng.

3. Biết là điền vào cột G nhưng là điền trên dòng nào?
Tôi phán đoán là điền trên dòng mới, chính bới ở đấy là nút THÊM MỚI, chứ không phải nút CẬP NHẬT.
Câu hỏi tiếp theo là, chỉ điền vào cột G thôi à? Các thông tin khác không cần à?
Như vậy output mong ước là như vậy này đúng không ạ? (Phần tô màu vàng)
Bạn cần đăng nhập để thấy hình ảnhTrước tiên mình cảm ơn admin vì đã tương hỗ mình cách diễn giải.
Phần “Thêm mới” tôi đã làm dc. Giờ mình xin trình diễn ý tưởng tiếp như sau:
Link File mình mới làm thêm phần “thêm mới”:Bạn cần đăng nhập để thấy link
– Mình muốn listbox của tớ như vậy nàyBạn cần đăng nhập để thấy đính kèm
Tức là listbox hiển thị tài liệu của Table1 nhưng chỉ hiển thị những dòng có mức giá trị cột G là ” Chưa nhập kho”
– Bình thường khi chưa lick vào nút “Sửa” thì khi lick vào listbox chỉ là dạng xem
– Khi lick nút “Sửa” và click dup vào 1 dòng tài liệu nào đó trong list thì tài liệu dòng này sẽ nhảy zô những textbox, combobox, OptionButton tương ứng với tiêu đề là những lable và hoàn toàn có thể sửa dc tài liệu tại những textbox, combobox, OptionButton đó.
– Nút ” cập nhập” chỉ có tác dụng khi đã ấn nút “sửa” trc đó
– Khi ấn” sửa” và sửa tài liệu tại những textbox, combobox, OptionButton ấn “Cập nhập” thì tài liệu mới sửa sẽ cập nhập tài liệu mới zô Table1 trong excel đúng dòng cũ
– Nút “Xóa” chỉ có tác dụng khi đã ấn nút “sửa” trc đó
– Khi ấn “sửa” thì sẽ chọn dc dòng tài liệu trên listbox (1 click) ấn “xóa” và ấn ” Cập nhập” thì sẽ xóa dòng tài liệu tương ứng tại table1 và đẩy dòng tài liệu dưới lên ( như kiểu : delete up)
Rất mong sự giúp sức của mọi người ạ1. Lỗi thiết kế.
Bạn muốn hiển thị tiêu đề, thì tức là phải sử dụng Rowsource. Mà như đã từng đề cập, toàn bộ chúng ta hạn chế dùng cái này.
Đính chính: Tiêu đề của Listbox như hình dưới đây.
Bạn cần đăng nhập để thấy hình ảnh
Nó không được như bạn mô tả. Thậm chí người tiêu dùng cũng hoàn toàn có thể click vào dòng xoáy tiêu đề đó nữa.
Như vậy để hiện thị tiêu đề, tôi khuyên bạn nên dùng Label để hiển thị tiêu đề.
Do đó, bạn cần update 8 Label vào UserForm để ghi tiêu đề vào đây. Và khi đó, người code sẽ nhờ vào độ rộng của Label mà bạn đã định sẵn để fix độ rộng cột hiển thị theo Label. Màu label thì tùy bạn chọn, cái này ý tưởng thiết kế là ở bạn.
Bạn nhờ bất kể ai làm dự án công trình bất Động sản này cho bạn cũng vậy thôi. Người code sẽ nỗ lực không dùng Rowsource.
Bạn cần đăng nhập để thấy hình ảnh

Bạn cần đăng nhập để thấy hình ảnh

2. Ý tưởng thiết kế chưa rõ ràng:
Người dùng ấn Sửa -> sửa tài liệu xong ấn Cập Nhật (tiếng việt tránh việc dùng CẬP NHẬP), muốn sửa tiếp thì có phải ấn lại vào Sửa nữa không?
Có hai hướng tâm ý: Không cần ấn lại vì phiền hà.
Hoặc: Cần ấn lại vì quy trình sửa ban đầu đã kết thúc rồi, muốn sửa mục khác phải ấn lại vào Sửa.

Tư vấn:
Theo tôi, cứ cho hiện Listbox thông thường. Bạn tránh việc phải giấu đi. Người ta click vào mục nào thì thông tin mục đó load vào những ô textbox, combobox, option…
Người ta ấn THÊM MỚI thì là thêm, ấn sửa CẬP NHẬT thì là update, ấn xóa thì là xóa. Tự nhiên cho nút SỬA chả hiểu để phòng chống cái gì.

Bạn hoàn toàn có thể tìm hiểu thêm topic Listbox ở đã trình diễn ở đây, ở đây có đủ kiến thức và kỹ năng cho bạn dùng:
Bạn cần đăng nhập để thấy link
Đính chính: Có 8 cột tài liệu, nên bạn cần tạo 8 Label tương ứng tiêu đề cho 8 cột. Vì việc tạo Label này cũng nằm trong kĩ năng của bạn, cho nên vì thế người giúp sẽ chỉ giúp code (phần mà bạn gặp trở ngại vất vả).
Vậy hãy thêm label và gửi lại file nhé.
Độ dài ngắn data của từng cột rất khác nhau, nên bạn hãy tính toán để những Label có độ rộng hợp lý tương ứng với tỷ suất độ rộng những cột trên sheet thì tốt nhất.Tôi lý giải qua code:
UserForm_Initialize: Tức là lúc Userform sẵn sàng sẵn sàng hiện ra trước mắt bạn, tôi cho thực thi gọi thủ tục tuhocvba để load thông tin vào listbox, sẽ trình diễn ở dưới. Chú ý là thời gian hiện nay Userform đang sẵn sàng sẵn sàng thông tin để hiện ra trước mắt bạn nhé. Nó chưa thực sự hiện ra đâu.
Tôi thấy bạn dùng: UserForm_Activate để làm gì đó, tôi thấy có lẽ rằng cho vào cái ở trên (UserForm_Initialize) mới là đúng thì phải. Mà tùy bạn.

Đoạn code này để lấy thông tin mà người tiêu dùng select trên listbox cho hiển thị trên những ô textbox và combobox mà bạn yêu cầu.
Mã:Private Sub ListBox1_Click()
‘tuhocvba
Dim i As Integer
Dim n As Integer
n = ListBox1.ListCount

If n = 0 Then Exit Sub
For i = 0 To n – 1 Step 1
If ListBox1.Selected(i) = True Then
txtngay.text = ListBox1.List(i, 0)
txtsl.text = ListBox1.List(i, 4)
txtdu.text = ListBox1.List(i, 5)
OptionButton1.Value = True
cbten.text = ListBox1.List(i, 2)
txtnote.text = ListBox1.List(i, 7)
End If
Next i
End SubTôi đoán là bạn muốn sửa hay update thì sẽ nhờ vào mã hàng.
Mã hàng mà người tiêu dùng click là ListBox1.List(i, 1) , vì thế bạn hoàn toàn có thể truyền vào tham số global để xử lý sau này.
Khai báo ở module bất kỳ:
Mã:public mahang_thvba as stringRồi ở đoạn code trên thì viết thêm dòng code :
Mã:If ListBox1.Selected(i) = True Then
….
‘ chèn dòng code này vào trong lệnh If
mahang_thvba = ListBox1.List(i, 1)
End ifTới đây thì bạn tự xử lý update hay xóa được rồi nhỉ. mahang_thvba là mã hàng mà người tiêu dùng đang select.
Ở Module1 tôi có viết thủ tục tuhocvba, nó có ý nghĩa là để nạp những giá trị từ bảng excel vào listbox với Đk là chưa nhập kho.
Có để ý quan tâm rằng, chưa nhập kho là ký tự tiếng việt có dấu, tôi không thể cứ thế viết s =”chưa nhập kho” cho nên vì thế tôi phải sử dụng Module2, đó là Module mà forum ta đã dày công xây dựng từ những nguồn tìm hiểu thêm trên internet để xử lý tiếng việt có dấu.
Tóm lại Module2 chứa những hàm để chuyển ký tự như thể “tuij hojc vba” thành “tụi học vba”.
Trở lại Module1, thủ tục vba là để load lên listbox.
Đầu tiên thao tác với listbox thì nên để ý quan tâm:
Mã:.Clear
.ColumnCount = 8
.ColumnWidths = “60;90;168;42;42;42;90;72”
.ListStyle = fmListStyleOption
.MultiSelect = FalseKhông nên phải ghi nhận listbox được gọi lần đầu hay thế nào, phải clear nội dung của listbox.
Tiếp theo, bạn muốn listbox có 8 cột cho nên vì thế thiết định bằng 8.
Dòng code tiếp theo là thiết định độ rộng những cột. Độ rộng này tại sao lại như vậy. Nếu bạn để ý thì trên UserForm tôi đã thêm 8 label cho nó.
Và độ rộng của 8 label này đó đó là dãy số ở trên: 60;90;168;42;42;42;90;72
Việc này đáng ra bạn tự làm được, chả hạn làm có xấu thì mọi người cũng tiếp tục sửa cho. Nhưng bạn không làm gì cả. trái lại còn đi nhờ nơi khác.
Vậy là nếu người ta và tôi cùng làm, thì chẳng phải là mất thời hạn của một người nào đó trong hai người hay sao? Bạn nghĩ thế nào và lại làm vậy? Giả sử có làm thế thì cũng nên lên topic này báo stop, những anh đừng làm nữa, em đang nhờ nơi khác rồi.

Tiếp theo là mẫu mã, cho hiển thị Option. Đó đó đó là cái hình tròn trụ tròn mà bạn thấy đó.
Bạn cần đăng nhập để thấy đính kèm
Nếu không thiết định thì hình này sẽ không còn còn. Mà bài học kinh nghiệm tay nghề listbox ở đây đã phục vụ link cho bạn rồi, không biết bạn đã đọc chưa.
Cuối cùng: Multiselect = Flase, nghĩa là tại thuở nào điểm, người tiêu dùng chỉ chọn vào một trong những dòng mà thôi. Không có chuyện nay chọn một dòng, tí nữa chọn thêm dòng nữa thì là 2 dòng.
Ở đây, người tiêu dùng được select vào một trong những dòng thôi.

Mã:If CStr(arrthvba(i, 7)) = temp Then

.AddItem CStr(arrthvba(i, 1))
.List(cnt_tem, 1) = CStr(arrthvba(i, 2))
.List(cnt_tem, 2) = CStr(arrthvba(i, 3))
.List(cnt_tem, 3) = CStr(arrthvba(i, 4))
.List(cnt_tem, 4) = CStr(arrthvba(i, 5))
.List(cnt_tem, 5) = CStr(arrthvba(i, 6))
.List(cnt_tem, 6) = CStr(arrthvba(i, 7))
.List(cnt_tem, 7) = CStr(arrthvba(i, 8))
cnt_tem = cnt_tem + 1
End IfAddItem CStr(arrthvba(i, 1)) : Thêm một dòng mới vào listbox, khởi đầu dòng là giá trị arrthvba(i, 1), ở đây đó đó là ngày. giá trị khởi đầu dòng mới mặc định là cột 0 của Listbox. Chú ý listbox có 8 cột và bắt nguồn từ 0,1,2,…7
Như vậy tôi đã có dòng mới và giá trị tại cột 0 đã được nạp. Tôi còn 7 cột nữa.
Đoạn code ở dưới:
Mã:.List(cnt_tem, 1) = CStr(arrthvba(i, 2))
.List(cnt_tem, 2) = CStr(arrthvba(i, 3))
.List(cnt_tem, 3) = CStr(arrthvba(i, 4))
.List(cnt_tem, 4) = CStr(arrthvba(i, 5))
.List(cnt_tem, 5) = CStr(arrthvba(i, 6))
.List(cnt_tem, 6) = CStr(arrthvba(i, 7))
.List(cnt_tem, 7) = CStr(arrthvba(i, 8))nghĩa là trên dòng mà tôi đang thao tác ấy, giờ đây trên những cột 1,2,3,…7 tôi lần lượt nạp giá trị cho nó.
Bạn cần đăng nhập để thấy đính kèm

Tôi không thấy bạn hỏi, nhưng mạn phép, đã hỗ trợ thì phải giúp người ta lý giải, viết mấy dòng này, lại còn tốn công chụp hình minh họa nữa, mà không biết bạn có chịu đọc không.
Chúc bạn thu hoạch được nhiều kiến thức và kỹ năng trên forum.Bạn ơi, bạn trình diễn thế này là người ta phải tải về file về xem mới hiểu được bạn ạ. Đấy là chưa tính sheet2 nhưng tên là sheet 1. Nếu người khó tính là họ sẽ feedback đấy.
Bạn tránh để tên xích míc như vậy. Mấy anh admin mà đọc thế nó lại không hài lòng về kiểu cách trình diễn.
Bạn cần đăng nhập để thấy hình ảnh
Bạn xem mình trình diễn như vậy này còn có dễ hiểu hơn không nhé. Nếu bài của bạn có thêm hình này, thì liệu có phải là dễ hiểu hơn không nào.
Bạn cần đăng nhập để thấy hình ảnh

Bạn dùng code sau nhé, cho vào module bất kỳ:
Mã:Sub tuhocvba0812()
Dim ngay_tem As String
Dim tenhang_tem As String
Dim soluong_tem As String
Dim rend_data_tem As Integer ‘Dong cuoi cua sheet DATA
Dim arr_tem As Variant
Dim i As Long
Dim mahang_tem As String
Dim dv_tem As String
Dim flag_tem As Boolean ‘Tim thay ten hang tren sheet DATA
Dim sh As String

Const rtile_data_tem As Byte = 6 ‘Dong tieu de cua sheet DATA
ngay_tem = UserForm1.TextBox1.Text
tenhang_tem = UserForm1.ComboBox1.Text
soluong_tem = UserForm1.TextBox2.Text
sh = ActiveSheet.Name ‘Lay ten sheet hien hanh hao: Sheet 2

‘Kiem tra
If ngay_tem = “” Then
MsgBox “Chua nhap ngay”
Exit Sub
End If
If tenhang_tem = “” Then
MsgBox “Chua nhap ten hang”
Exit Sub
End If
If soluong_tem = “” Then
MsgBox “Chua nhap so luong”
Exit Sub
End If
If IsNumeric(soluong_tem) = False Then
MsgBox “Ban phai nhap so luong la CHU SO” ‘Ex: 1,2,3,..
Exit Sub
End If
‘nap du lieu sheet DATA
ThisWorkbook.Sheets(“DATA”).Activate
rend_data_tem = ThisWorkbook.Sheets(“DATA”).Cells(Rows.Count, 1).End(xlUp).Row
If rend_data_tem <= rtile_data_tem Then
MsgBox “sheet DATA khong co du lieu. Vui long kiem tra lai”
Exit Sub
End If
arr_tem = ThisWorkbook.Sheets(“DATA”).Range(Cells(rtile_data_tem + 1, 1), Cells(rend_data_tem, 3)).Value ‘Nap du lieu sheet DATA vao mang
flag_tem = False
For i = LBound(arr_tem, 1) To UBound(arr_tem, 1) Step 1
If CStr(arr_tem(i, 2)) = tenhang_tem Then ‘tim theo ten hang
mahang_tem = CStr(arr_tem(i, 1)) ‘lay ma hang
dv_tem = CStr(arr_tem(i, 3)) ‘Lay DVT
flag_tem = True
Exit For
End If
Next i
If flag_tem = False Then
MsgBox “Khong tim thay ten hang tren sheet DATA. Vui long kiem tra lai”
Exit Sub ‘Ket thuc chuong trinh
End If
‘neu khong co van de gi thi ghi thong tin
ThisWorkbook.Sheets(sh).Activate
rend_data_tem = ThisWorkbook.Sheets(sh).Cells(Rows.Count, 1).End(xlUp).Row + 1 ‘Lay dong cuoi + 1
‘Ghi thong tin:
With ThisWorkbook.Sheets(sh)
.Cells(rend_data_tem, 1) = ngay_tem ‘ngay
.Cells(rend_data_tem, 2) = mahang_tem ‘ma hang
.Cells(rend_data_tem, 4) = dv_tem ‘DVT
.Cells(rend_data_tem, 5) = soluong_tem ‘So luong
.Cells(rend_data_tem, 3) = tenhang_tem ‘Tenhang
End With
End SubCode cho nút bấm thì mình thấy bạn viết một phần, bỏ hết đi vì ở trên mình viết đủ rồi. Bạn chỉ việc gọi thủ tục ở trên là được.
Mã:Private Sub CommandButton1_Click()
Call tuhocvba0812
End SubChú ý mã hàng là dãy số dài, nên bạn phải định dạng cột B của sheet DATA là text thì mới hiển thị đúng, số không biến thành biến dạng.
Bạn cần đăng nhập để thấy hình ảnh

Reply
3
0
Chia sẻ

Video Xóa tài liệu trong ListBox C# ?

Bạn vừa Read Post Với Một số hướng dẫn một cách rõ ràng hơn về Review Xóa tài liệu trong ListBox C# tiên tiến và phát triển nhất

Share Link Download Xóa tài liệu trong ListBox C# miễn phí

Pro đang tìm một số trong những Chia Sẻ Link Cập nhật Xóa tài liệu trong ListBox C# miễn phí.

Thảo Luận vướng mắc về Xóa tài liệu trong ListBox C#

Nếu Pro sau khi đọc nội dung bài viết Xóa tài liệu trong ListBox C# , bạn vẫn chưa hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Mình lý giải và hướng dẫn lại nha
#Xóa #dữ #liệu #trong #ListBox

Exit mobile version