列表视图列中的项目排序

时间:2012-01-19 22:51:40

标签: c# winforms

您好我有一个列表视图与不同列ID,名称,邮政编码,城市,国家,电话,电子邮件 我有两个表单,Form1和Form2

在第一种形式中,我有列表的列表视图 在第二个表单上,我有一个自定义管理器,其中包含不同的列表框,您可以在其中键入客户信息(例如姓名,邮政编码,城市等)

我希望Form2中的信息在Form1 中的列之后排序。从“名称”开始,Form2中的Texbox应插入Form1列表视图中的Name列下,并且文本框Zipcode文本应插入Zipcode列下。

picture http://img717.imageshack.us/img717/3486/skiten1.png

这很难,因为我的初学者和跟随不同的网站并没有帮助我。

请问我能做些什么。

Form1中

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);


        }

Form1中

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);

我真的不知道你需要多少代码来帮助我,而且我的代码非常混乱

1 个答案:

答案 0 :(得分:1)

在传统意义上,这并不完全是“排序”。您只是尝试将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);
  }
}
相关问题