Gå til innhold

C# .NET data bind List til ListView


Anbefalte innlegg

Hei,

 

Har googlet og browset MSDN uten å forstå dette her overhodet. Er helt ny til databinding, men jeg skjønner at det er praktisk å kunne bruke i .NET.

 

Nå til problemet:

 

Jeg har laget en filserver og har da en liste med aktive tilkoblinger, List<Connection>. Jeg vil gjerne ha det slik at denne listen reflekteres i en ListView som finnes i gui-et. Hvordan gjør jeg dette? Hvordan velger jeg ut de forskjellige variablene av Connection-objektene i listen min og viser alle i ListView-en min?

 

Forenklet eksempel med en Person-liste:

 

Person.cs:

 

namespace SmallProject
{
class Person
{
	string m_name;
	int m_age;

	public Person(string name, int age)
	{
		m_name = name;
		m_age = age;
	}

	public string Name
	{
		get { return m_name; }
		set { m_name = value; }
	}

	public int Age
	{
		get { return m_age; }
		set { m_age = value; }
	}
}
}

 

Form1.Designer.cs:

 

namespace SmallProject
{
partial class SmallProjectForm
{
	/// <summary>
	/// Required designer variable.
	/// </summary>
	private System.ComponentModel.IContainer components = null;

	/// <summary>
	/// Clean up any resources being used.
	/// </summary>
	/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
	protected override void Dispose(bool disposing)
	{
		if (disposing && (components != null))
		{
			components.Dispose();
		}
		base.Dispose(disposing);
	}

	#region Windows Form Designer generated code

	/// <summary>
	/// Required method for Designer support - do not modify
	/// the contents of this method with the code editor.
	/// </summary>
	private void InitializeComponent()
	{
		this.PersonList = new System.Windows.Forms.ListView();
		this.PersonListName = new System.Windows.Forms.ColumnHeader();
		this.PersonListAge = new System.Windows.Forms.ColumnHeader();
		this.SuspendLayout();
		// 
		// PersonList
		// 
		this.PersonList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
		this.PersonListName,
		this.PersonListAge});
		this.PersonList.Location = new System.Drawing.Point(12, 12);
		this.PersonList.Name = "PersonList";
		this.PersonList.Size = new System.Drawing.Size(260, 133);
		this.PersonList.TabIndex = 0;
		this.PersonList.UseCompatibleStateImageBehavior = false;
		this.PersonList.View = System.Windows.Forms.View.Details;
		// 
		// PersonListName
		// 
		this.PersonListName.Text = "Name";
		this.PersonListName.Width = 120;
		// 
		// PersonListAge
		// 
		this.PersonListAge.Text = "Age";
		// 
		// SmallProjectForm
		// 
		this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
		this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
		this.ClientSize = new System.Drawing.Size(284, 310);
		this.Controls.Add(this.PersonCountText);
		this.Controls.Add(this.PersonCountLabel);
		this.Controls.Add(this.PersonRemoveButton);
		this.Controls.Add(this.PersonAddButton);
		this.Controls.Add(this.PersonAgeText);
		this.Controls.Add(this.PersonNameText);
		this.Controls.Add(this.PersonAgeLabel);
		this.Controls.Add(this.PersonNameLabel);
		this.Controls.Add(this.PersonList);
		this.Name = "SmallProjectForm";
		this.Text = "SmallProject";
		this.ResumeLayout(false);
		this.PerformLayout();

	}

	#endregion

	private System.Windows.Forms.ListView PersonList;
	private System.Windows.Forms.ColumnHeader PersonListName;
	private System.Windows.Forms.ColumnHeader PersonListAge;
}
}

 

Program.cs:

 

namespace SmallProject
{
static class Program
{
	static List<Person> persons;

	public static List<Person> Persons
	{
		get { return persons; }
	}

	/// <summary>
	/// The main entry point for the application.
	/// </summary>
	[STAThread]
	static void Main()
	{
		persons = new List<Person>();

		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new SmallProjectForm());
	}
}
}

 

Form1.cs:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SmallProject
{
public partial class SmallProjectForm : Form
{
	public SmallProjectForm()
	{
		InitializeComponent();
	}

	private void SomeAddPersonEvent(object sender, EventArgs e)
	{
		string name = "Jan-Ove";
		int age = 26;

		Program.Persons.Add(new Person(name, age));

		// Should be added to the PersonList now.
	}

	private void SomeRemovePersonEvent(object sender, EventArgs e)
	{
		if (Program.Persons.Count > 0)
			Program.Persons.RemoveAt(0);

		// Should be removed from the PersonList now.
	}
}
}

 

Hadde vært knall om noen hadde link til en god side hvor data binding blir forklart for lister og ListView. Evt. forklare meg kjapt hvordan i denne koden.

Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...