Giúp mình về Listview trong C#

Thảo luận trong 'C#' bắt đầu bởi moitapcode, 10 Tháng mười hai 2011.

  1. Offline

    moitapcode

    • Thành Viên Mới

    Số bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    0
    Minh đang làm bài tập sau:
    -Khi nhập vào data vào textbox thì dữ liệu sẽ được add vào List box vào cột ai và pi , cái này thì mình làm được rồi, Hiện tại mình không biết xử lí nút Encode.Tức là khi Click Endcode thì các cột còn lại sẽ được tính toán và hiện lên ListView ở các cột tương ứng (các cột qi,nhị phân,li và wi).
    -Ở cột qi: qi sẽ được tính như ví dụ trong hình:
    +Ứng với pi=12 thì qi=0;
    +Ứng với pi=1 thì qi=12;
    +Ứng với pi=4 thì qi=12+1=13.(cái này mình chỉ ví dụ cho dễ hình dung thôi, thực tế thì ta phải tính tất cả các hàng được nhập vào).
    -Ở cột "nhị phân" thì ta phải đổi các số vừa tính được bên cột qi ra hệ nhị phân.
    -Ở cột "li" ta phải tính log2 của pi.
    -Cột từ mã ta phải dựa vào kết quả của li(cái này mình có thể làm được).
    Mình mới bắt đầu học C# nên gặp rất nhiều khó khăn. Mong các bạn có thể giúp mình hoàn thiện được bài tập này!
    [IMG]
  2. Offline

    SPD

    • Windows 98

    • Ngông cuồng, ngang tàng, phách lối
    Số bài viết:
    225
    Đã được thích:
    83
    Điểm thành tích:
    190
    code của bạn này
    [IMG]
    Mã:
    public partial class Form1 : Form
        {
            int ai = 0, qi = 0, np = 0, chusonhiphan = 0;
            string nhiphannguoc = "", nhiphan = "";
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                listView1.View = View.Details;
                listView1.Items.Clear();
                listView1.Columns.Clear();
                listView1.Columns.Add("ai");
                listView1.Columns.Add("pi");
                listView1.Columns.Add("qi");
                listView1.Columns.Add("Nhi phan");
                listView1.Columns.Add("li(log co so 2 cua pi)");
            }
            private void btnAdd_Click_1(object sender, EventArgs e)
            {
                ai += 1;
                ListViewItem item = new ListViewItem(ai.ToString());
                item.SubItems.Add(txtqi.Text);
                item.SubItems.Add(qi.ToString());
                chusonhiphan = qi;
                for (int i = qi; i >= 0; i--)
                {
                    int np = chusonhiphan % 2;
                    nhiphannguoc = nhiphannguoc + np.ToString();
                    chusonhiphan = chusonhiphan / 2;
                    if (chusonhiphan == 0)
                        break;
                }
                for (int i = nhiphannguoc.Length - 1; i >= 0; i--)
                {
                    nhiphan = nhiphan + nhiphannguoc.Substring(i, 1);
                }
                item.SubItems.Add(nhiphan);
                nhiphan = "";
                nhiphannguoc = "";
                chusonhiphan = 0;
                if (qi != 0)
                    item.SubItems.Add(Math.Log(int.Parse(txtqi.Text), 2).ToString());
                else
                    item.SubItems.Add("");
                listView1.Items.Add(item);
                qi += int.Parse(txtqi.Text);
            }
    [URL="http://www.upanh.com/code_upanh/v/9ns8chaxeja.htm"]
    [/URL]

    [IMG]
    ngoisaobang, moitapcodebinhcaolinh thích bài này.
  3. Offline

    moitapcode

    • Thành Viên Mới

    Số bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    0
    Thanks bạn nhiều ^^, bây giờ mình muốn khi ấn add thì giá trị pi sẽ được add vào listview và tự đông sắp theo thứ tự từ giảm dần thì phải làm thế nào ? Mình làm mãi mà vẫn chưa được !
  4. Offline

    SPD

    • Windows 98

    • Ngông cuồng, ngang tàng, phách lối
    Số bài viết:
    225
    Đã được thích:
    83
    Điểm thành tích:
    190
    Cái này mình chịu :)
    moitapcode thích bài này.
  5. Offline

    lyvinhr00m

    • cụ lý

    Số bài viết:
    1.234
    Đã được thích:
    930
    Điểm thành tích:
    900
    Bạn có thể tự xây dựng cho mình 1 hàm sắp xếp cac phần tử listbox.
    Hàm này mình làm vbb.net , đã chuyển qua c#. bạn có thể tham khảo:
    Tinh thần là không thể thực hiện viết hàm sắp xếp với các phần tử listbox, nên phải chuyển qua mảng, sắp xếp mảng rồi add vô lại listbox.
    Mong thiên hạ không chê cười.

    Mã:
    public void sapxep(ListBox a)
    {
    	ArrayList s = new ArrayList();
    	int i = 0;
    	int x = 0;
    	for (i = 0; i <= a.Items.Count - 1; i++) {
    		s.Add(Convert.ToInt32(a.Items(i)));
    	}
    	dynamic n = s.Count;
    	for (i = 0; i <= n - 2; i++) {
    		int m = i;
    		for (int j = i + 1; j <= n - 1; j++) {
    			if ((s[j] < s[m])) {
    				m = j;
    			}
    		}
    		if ((m != i)) {
    			x = s[i];
    			s[i] = s[m];
    			s[m] = x;
    		}
    	}
    	a.Items.Clear();
    	int k = 0;
    	foreach (int k_loopVariable in s) {
    		k = k_loopVariable;
    		a.Items.Add(k.ToString());
    	}
    }
    Giờ chỉ việc gọi lại và dùng thôi!
    SPDmoitapcode thích bài này.
  6. Offline

    moitapcode

    • Thành Viên Mới

    Số bài viết:
    3
    Đã được thích:
    0
    Điểm thành tích:
    0
    Code của bạn viết chung tất cả vào nút add luôn, nhưng yêu cầu của đề thì nút add chỉ có chức năng add 2 côt đầu (ai và pi), việc add các cột sau do nút Endcode đảm nhiệm, với lại hàm chuyển sang nhị phân của bạn không chuyển được số thập phân(dạng 0.34,0.12,....) ra hệ nhị phân, mình chỉ cần chuyển được các số thập phân trong khoảng(0,1) ra hệ nhị phân là được.
    Ví dụ: 0,12 = 0,11000...
    Bạn có thể sửa lại code giúp mình được không? Cảm ơn bạn nhiều ^^
  7. Offline

    SPD

    • Windows 98

    • Ngông cuồng, ngang tàng, phách lối
    Số bài viết:
    225
    Đã được thích:
    83
    Điểm thành tích:
    190
    Mình chỉ giúp được cái nút Encode còn chuyển số nhỏ hơn 1 sang số nhị phân thì mình chịu
    Mã:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            int ai = 0;
            int qi = 0;
            int chisolistview = 0;
            double li = 0;
            int np = 0, chusonhiphan = 0; 
            string nhiphannguoc = "", nhiphan = "";
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                listView1.View = View.Details;
                listView1.Items.Clear();
                listView1.Columns.Clear();
                listView1.Columns.Add("ai");
                listView1.Columns.Add("pi");
                listView1.Columns.Add("qi");
                listView1.Columns.Add("nhi phan");
                listView1.Columns.Add("li (log co so 2 cua pi)");
            }
    
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                ai += 1;
                ListViewItem item = new ListViewItem(ai.ToString());
                item.SubItems.Add(txtpi.Text);
                item.SubItems.Add("");
                item.SubItems.Add("");
                item.SubItems.Add("");
                listView1.Items.Add(item);
            }
    
    
            private void btnEncode_Click(object sender, EventArgs e)
            {
                ListViewItem item = new ListViewItem(listView1.SelectedItems[0].Text);
                item.SubItems.Add(listView1.SelectedItems[0].SubItems[1].Text);
                chisolistview = listView1.SelectedItems[0].Index;
                for(int i = 0;i<=chisolistview - 1;i++)
                {
                    qi += int.Parse(listView1.SelectedItems[0].SubItems[1].Text);
                }
                item.SubItems.Add(qi.ToString());
                // chuyen sang so nhi phan
                chusonhiphan = qi; for (int i = qi; i >= 0; i--) 
                {
                    int np = chusonhiphan % 2; 
                    nhiphannguoc = nhiphannguoc + np.ToString(); 
                    chusonhiphan = chusonhiphan / 2; 
                    if (chusonhiphan == 0) 
                        break; 
                } 
                for (int i = nhiphannguoc.Length - 1; i >= 0; i--) 
                { 
                    nhiphan = nhiphan + nhiphannguoc.Substring(i, 1); 
                } 
                item.SubItems.Add(nhiphan); 
                nhiphan = ""; 
                nhiphannguoc = ""; 
                chusonhiphan = 0;
                
                if (qi != 0) 
                    item.SubItems.Add(Math.Log(int.Parse(txtpi.Text), 2).ToString()); 
                else 
                    item.SubItems.Add("");
                listView1.Items[chisolistview] = item;
                listView1.Update();
                qi = 0;
            }
        }
    }
    
    moitapcode thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí