Lậptrình Winform

cấu hình hiển thị cột cho DataGridView

Lập trình C# với winform, bạn có thể gặp rất nhiều form quản lý các đối tượng có nhiều thông tin (nhiều cột). Nhưng người dùng nhiều khi không muốn hiển thị hết, họ muốn tự chọn cột và thứ tự hiển thị. Vậy đây là cách chúng ta làm.

Basiap - cấu hình hiển thị cột trên grid

Chúng ta sẽ tạo một Tool hiển thị danh sách cột, đánh dấu các cột đang hiên thị, cho phép người dùng check chọn hiển thị và thay đổi thứ tự cột trong listbox.

Bắt đầu chúng ta tạo 1 Form tên là: HeThongCauHinhCot. Viết phương thức khởi tạo với các mảng arrCol(danh sách cột), arrVisibleCol(danh sách cột hiển thị).

Tiếp theo cần xử lý để show 2 mảng vào CheckedListBox:

        public HeThongCauHinhCot(string[] arrCol, string[] arrVisibleCol)
        {
            InitializeComponent();
            clstCol.Items.AddRange(arrCol);
            for (int i = 0; i < arrCol.Length; i++)
            {
                if (arrVisibleCol.Contains(clstCol.Items[i].ToString()))
                {
                    clstCol.SetItemChecked(i, true);
                }
            }

        }

Thế là đã có danh sách cột để lựa chọn rồi nhé. Tiếp theo cần cho phép thay đổi tứ thự cột. Thêm 2 button lên xuống và viết code như sau:

        private void btnUp_Click(object sender, EventArgs e)
        {
            _MoveSelectedItem(clstCol, -1);
        }
        private void btnDown_Click(object sender, EventArgs e)
        {
            _MoveSelectedItem(clstCol, 1);

        }

        public void _MoveSelectedItem(ListBox listBox, int direction)
        {
            // Checking selected item
            if (listBox.SelectedItem == null || listBox.SelectedIndex < 0)
                return; // No selected item - nothing to do
 
            // Calculate new index using move direction
            int newIndex = listBox.SelectedIndex + direction;
 
            // Checking bounds of the range
            if (newIndex < 0 || newIndex >= listBox.Items.Count)
                return; // Index out of range - nothing to do
 
            object selected = listBox.SelectedItem;
 
            // Save checked state if it is applicable
            var checkedListBox = listBox as CheckedListBox;
            var checkState = CheckState.Unchecked;
            if (checkedListBox != null)
                checkState = checkedListBox.GetItemCheckState(checkedListBox.SelectedIndex);
 
            // Removing removable element
            listBox.Items.Remove(selected);
            // Insert it in new position
            listBox.Items.Insert(newIndex, selected);
            // Restore selection
            listBox.SetSelected(newIndex, true);
 
            // Restore checked state if it is applicable
            if (checkedListBox != null)
                checkedListBox.SetItemCheckState(newIndex, checkState);

        }

Xong vậy là chúng ta đã có thể thay đổi bị trí các cột lên hoặc xuống. Chúng ta còn phần tích hợp form này với 1 form quản lý nữa.

Nguyên tắc là Form quản lý sẽ gọi Form HeThongCauHinhCot đồng thời truyền danh sách cột của DataGridView lên để hiển thị.

Sau khi cấu hình xong cột trên HeThongCauHinhCot sẽ trả về các danh sách cột, trạng thái hiển thị để load lại DataGridView.

Phần này tùy từng màn hình mọi người xử lý tiếp nhé. Cách thức giống hêt khi cấu hình cột trong Windows Explorer.

Basiap cau hinh cot DataGridView

Chỉ có vậy thôi nhé, quá dễ bạn nhỉ. Nếu khó khăn bạn vui lòng để lại tin nhắn phía dưới nhé.

Một phút quảng cáo bắt đầu....

BASIAP - CÔNG NGHỆ TỐI ƯU.

Chuyên phát triển và triển khai các hệ thống phần mềm quản lý cho doanh nghiệp vừa và nhỏ trong lĩnh vực logistics xuất nhập khẩu, kho bãi, vận tải.

Các lĩnh vực phần mềm:

- Phần mềm quản lý kho dịch vụ.

- Phần mềm quản lý dịch vụ vận tải.

- Phần mềm quản lý xuất nhập khẩu.

- Các hệ thống phần mềm quản lý chuyên biệt theo yêu cầu.

HÃY LIÊN HỆ NGAY VỚI BASIAP ĐỂ XÂY DỰNG HỆ THỐNG TỐI ƯU HIỆU QUẢ DOANH NGHIỆP CỦA BẠN.

Website: basiap.com | Hotline: 0764758686 | Email: This email address is being protected from spambots. You need JavaScript enabled to view it.

Fix lỗi Configuration System Failed to Initialize

Trong lập trình C# với Visual studio, thỉnh thoảng chúng ta gặp vài lỗi củ chuối mà trả liên quan gì đến code của bạn. Tự nhiên một ngày đẹp trời bạn sẽ gặp chúng, lỗi: "Configuration System Failed to Initialize" là một lỗi như vậy. Rất củ chuối. Nhưng cách giải quyết lại cực dễ.

Tất nhiên là Basiap sẽ hướng dẫn bạn theo cách đơn giản nhất, cách khó hơn bạn cần google thêm nhé.

Giải pháp: Deleting the Configuration file of Application

Khi Build ứng dụng, hệ thống tự đọng tạo các file config trong thư mục tạm theo các đường dẫn dưới dây:

C:\Users\<Your Username>\AppData\Local\<Your App Name>
C:\Users\<Your Username>\AppData\Roaming\<Your App Name>

Bằng một hành động vô tình nào đó file config của bạn bị lỗi (corrupted). Thế là cứ build đi build lại vẫn lỗi. Trường hợp này cách giải quyết nhanh gọn nhất là Delete luôn thư mục App của bạn đi và quay ra build lại App. Hệ thống không tìm thấy file tạm sẽ tự động tạo ra file config mới. Hệ thống sẽ chạy ngon như chưa từng xảy ra lỗi.

Basiap - Configuration System Failed to Initialize Bug

Chỉ có vậy thôi nhé, quá dễ bạn nhỉ. Các khó khăn bạn vui lòng để lại tin nhắn phía dưới nhé.

Tham khảo thêm: https://appuals.com/fix-configuration-system-failed-initialize/

 

Một phút quảng cáo bắt đầu....

BASIAP - CÔNG NGHỆ TỐI ƯU.

Chuyên phát triển và triển khai các hệ thống phần mềm quản lý cho doanh nghiệp vừa và nhỏ trong lĩnh vực logistics xuất nhập khẩu, kho bãi, vận tải.

Các lĩnh vực phần mềm:

- Phần mềm quản lý kho dịch vụ.

- Phần mềm quản lý dịch vụ vận tải.

- Phần mềm quản lý xuất nhập khẩu.

- Các hệ thống phần mềm quản lý chuyên biệt theo yêu cầu.

HÃY LIÊN HỆ NGAY VỚI BASIAP ĐỂ XÂY DỰNG HỆ THỐNG TỐI ƯU HIỆU QUẢ DOANH NGHIỆP CỦA BẠN.

Website: basiap.com | Hotline: 0764758686 | Email: This email address is being protected from spambots. You need JavaScript enabled to view it.

Lập trình C# - Mẹo thêm đường thẳng phân cách trên form

Trong lập trình C# với winform, nhiều khi bạn cần vẽ 1 đường thẳng ngang, dọc để phân cách các khối control. Nhưng Toolbox không có Line control cho bạn đâu. Tuy nhiên chỉ cần 1 mẹo nhỏ bạn đã có ngay Line mong muốn.

Basiap logistics software

Để tạo đường thầng trong Windows Forms, hãy sử dụng điều khiển Label. Đặt Height của nó thành 2 pixel và BorderStyle thành Fixed3D.

   [C#]

   label1.AutoSize = false;

   label1.Height = 2

   label1.BorderStyle = BorderStyle.Fixed3D;

Trường hợp đường thẳng theo chiều dọc đơn giản chỉ cần đặt Width = 2px

Chỉ có vậy thôi nhé, quá dễ bạn nhỉ. Nếu khó khăn bạn vui lòng để lại tin nhắn phía dưới nhé.

Một phút quảng cáo bắt đầu....

BASIAP - CÔNG NGHỆ TỐI ƯU.

Chuyên phát triển và triển khai các hệ thống phần mềm quản lý cho doanh nghiệp vừa và nhỏ trong lĩnh vực logistics xuất nhập khẩu, kho bãi, vận tải.

Các lĩnh vực phần mềm:

- Phần mềm quản lý kho dịch vụ.

- Phần mềm quản lý dịch vụ vận tải.

- Phần mềm quản lý xuất nhập khẩu.

- Các hệ thống phần mềm quản lý chuyên biệt theo yêu cầu.

HÃY LIÊN HỆ NGAY VỚI BASIAP ĐỂ XÂY DỰNG HỆ THỐNG TỐI ƯU HIỆU QUẢ DOANH NGHIỆP CỦA BẠN.

Website: basiap.com | Hotline: 0764758686 | Email: This email address is being protected from spambots. You need JavaScript enabled to view it.

Tăng hiệu suất load dữ liệu của DataGridView lên 10 lần

Trong lập trình C# với winform, khi bạn hiển thị dữ liệu lên DataGridView với số lượng dòng cột lớn, mỗi lần kéo dòng, cuộn cột em DataGridView lại giật giật đau hết cả mắt. Làm sao để em nó show được dữ liệu một cách nuột nà hơn.

Có nhiều cách và tất nhiên là Basiap sẽ hướng dẫn bạn theo cách đơn giản nhất. Một phát áp dụng cho toàn bộ các Grid của bạn. Bắt đầu nhé:

Bước 1: Tạo phương thức chung tăng hiệu năng DataGridView 

        /// <summary>
        /// Tang hieu nang gridview.
        /// </summary>
        public static void DoubleBuffered(this DataGridView dgv, bool setting)
        {
            Type dgvType = dgv.GetType();
            PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
                  BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(dgv, setting, null);

        }

Bước 2: Áp dụng cho tất cả các Form có DataGridView. Chỉ cần đặt dòng này vào chỗ khởi tạo Form

    Commons.DoubleBuffered(dgrData, true);

Chỉ có vậy thôi nhé, quá dễ bạn nhỉ. Các khó khăn bạn vui lòng để lại tin nhắn phía dưới nhé.

Một phút quảng cáo bắt đầu....

BASIAP - CÔNG NGHỆ TỐI ƯU.

Chuyên phát triển và triển khai các hệ thống phần mềm quản lý cho doanh nghiệp vừa và nhỏ trong lĩnh vực logistics xuất nhập khẩu, kho bãi, vận tải.

Các lĩnh vực phần mềm:

- Phần mềm quản lý kho dịch vụ.

- Phần mềm quản lý dịch vụ vận tải.

- Phần mềm quản lý xuất nhập khẩu.

- Các hệ thống phần mềm quản lý chuyên biệt theo yêu cầu.

HÃY LIÊN HỆ NGAY VỚI BASIAP ĐỂ XÂY DỰNG HỆ THỐNG TỐI ƯU HIỆU QUẢ DOANH NGHIỆP CỦA BẠN.

Website: basiap.com | Hotline: 0764758686 | Email: This email address is being protected from spambots. You need JavaScript enabled to view it.