簡體   English   中英

在列表視圖列中對項目進行排序

[英]Sort item in listview columns

嗨,我有一個具有不同列ID,名稱,郵政編碼,城市,國家/地區,電話,電子郵件的列表視圖,並且我有兩個表單,即Form1和Form2

在第一個表單中,我具有帶有列的列表視圖;在第二個表單中,我具有帶有不同列表框的自定義管理器,您可以在其中輸入客戶信息(例如姓名,郵政編碼,城市等)

我希望Form2中的信息在Form1中的列之后進行排序 例如,應將Form2中的“名稱” Texbox插入到“名稱”列下的Form1列表視圖中,並將文本框的Zipcode文本插入到Zipcode列下。

圖片http://img717.imageshack.us/img717/3486/skiten1.png

很難,因為我只是一個初學者,並且關注不同的站點對我沒有幫助。

請我該怎么辦。

表格1

InitializeComponent();


listView1.View = View.Details;
listView1.LabelEdit = true;
listView1.AllowColumnReorder = true;
listView1.FullRowSelect = true;
listView1.GridLines = true;
listView1.Sorting = SortOrder.Ascending;

listView1.FullRowSelect = true;
listView1.Columns.Add("ID", 300, HorizontalAlignment.Left);
listView1.Columns.Add("Name", 70, HorizontalAlignment.Left);
listView1.Columns.Add("Zipcode", 70, HorizontalAlignment.Left);
listView1.Columns.Add("City", 100, HorizontalAlignment.Left);
listView1.Columns.Add("Country", 100, HorizontalAlignment.Left);
listView1.Columns.Add("Phone", 100, HorizontalAlignment.Left);
listView1.Columns.Add("Email", 100, HorizontalAlignment.Left);

表格2

private void btnOk_Click(object sender, EventArgs e)
       {
           contact.FirstName = tbFirstName.Text;
           firstName = contact.FirstName;

           contact.LastName = tbLastName.Text;
           lastName = contact.LastName;

表格2

private void btnOk_Click(object sender, EventArgs e)
        {
            MainForm main = new MainForm();

            contact.FirstName = tbFirstName.Text;
            firstName = contact.FirstName;

            contact.LastName = tbLastName.Text;
            lastName = contact.LastName;

仍然是Form2

 public override string ToString()
    {
        return string.Format("[{0}]", contact.ToString());

    }

//這里是Contact類

class Contact
    {
    private string firstName;
    private string lastName

在Contact類中,還有上述變量的屬性,然后是一個像這樣的ToString

public override string ToString()
        {
            return string.Format("[{0}, {1}, {2}, {3}]", firstName, lastName);


        }

表格1

private void MainForm_Load(object sender, EventArgs e)
        {
            ColumnHeader columnheader;
            ListViewItem listviewitem;

            // Ensure that the view is set to show details.
            listView1.View = View.Details;
if (customerframe.ShowDialog() == DialogResult.OK) //if button OK is clicked then value will be inserted
            {
                listviewitem = new ListViewItem(contact.FirstName);
                listviewitem.SubItems.Add(contact.LastName);
this.listView1.Items.Add(listviewitem);

我真的不知道您需要多少代碼來幫助我,而且我的代碼很亂

在傳統意義上,這並不是完全“排序”。 您只是試圖將ListViewItem添加到ListView控件中,然后將更多信息添加到該ListViewItem的SubItems中。

一個例子看起來像這樣:

ListViewItem lvi = new ListViewItem(yourID);
lvi.SubItems.Add(contact.Fullname);
lvi.SubItems.Add(zipcode);
lvi.SubItems.Add(city);
lvi.SubItems.Add(address.country);
lvi.SubItems.Add(phone);
lvi.SubItems.Add(email);

listView1.Items.Add(lvi);

更新:

您的customerFrame類(Form2)看起來好像沒有對Contact參考的引用。

您的customerFrame返回一個Contact對象,其中已填寫數據。 像這樣:

Public Contact GetContact() {
  Contact contact = new Contact();
  contact.FirstName = tbFirstName.Text;
  // etc.
  return contact;
}

然后您的Form1調用應如下所示:

using (var customerFrame = new CustomerFrame()) {
  if (customerFrame.ShowDialog() == DialogResult.OK) {
    Contact contact = customerFrame.GetContact();

    listviewitem = new ListViewItem(contact.FirstName);
    listviewitem.SubItems.Add(contact.LastName);
    // etc.
    this.listView1.Items.Add(listviewitem);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM