using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Serialization;
namespace ListviewOrnek
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Kitap> kitaplar;
private void Form1_Load(object sender, EventArgs e)
{
try
{
XmlSerializer okuyucu = new XmlSerializer(typeof(List<Kitap>));
// ProjeKlasörümüz\bin\debug klasörü altında veri.xml adlı dosyadan verileri alıyoruz.
string yol = AppDomain.CurrentDomain.BaseDirectory + "\\veri.xml";
StreamReader file = new StreamReader(yol);
//xml dosyasından bu satır ile verileri alıyoruz
kitaplar = (List<Kitap>)okuyucu.Deserialize(file);
file.Close();
}
catch//veri almak için xml dosyası bulunamazsa varsayılan verilerle Kitap listesini doldur.
{
kitaplar = new List<Kitap>()
{
new Kitap{ Adi="Kitap1", Yazari="Yazar1", YayinlanmaYili="2001"},
new Kitap{ Adi="Kitap2", Yazari="Yazar2", YayinlanmaYili="2002"},
new Kitap{ Adi="Kitap3", Yazari="Yazar3", YayinlanmaYili="2003"},
};
}
//Listview özelliklerini ayarlıyoruz
listView1.LabelEdit = false;
listView1.CheckBoxes = true;
listView1.GridLines = true;
//Tüm verilerin görünmesi için detaylı görünüme ayarlamalıyız.
listView1.View = View.Details;
listView1.FullRowSelect = true;
//Kitap listesindeki verileri listviewa ekliyoruz.
for (int i = 0; i < kitaplar.Count(); i++)
{
Kitap siradakiKitap=kitaplar[i];
string[] kitapOzellikleri = { siradakiKitap.Adi, siradakiKitap.Yazari, siradakiKitap.YayinlanmaYili};
ListViewItem yeniListViewElemani = new ListViewItem(kitapOzellikleri);
listView1.Items.Add(yeniListViewElemani);
}
//listviewın sütunlarını belirliyoruz. Her biri 100 px genişliğinde ve sola yaslanmış şekilde
listView1.Columns.Add("Adı", 100, HorizontalAlignment.Left);
listView1.Columns.Add("Yazarı", 100, HorizontalAlignment.Left);
listView1.Columns.Add("Yayınlanma Yılı", 100, HorizontalAlignment.Left);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//Program kapatılırken tüm verileri xml dosyasına yazalım
XmlSerializer yazici = new XmlSerializer(typeof(List<Kitap>));
string yol = AppDomain.CurrentDomain.BaseDirectory + "\\veri.xml";
StreamWriter file = new StreamWriter(yol);
yazici.Serialize(file, kitaplar);
file.Close();
}
}
public class Kitap
{
public string Adi
{
get;
set;
}
public string Yazari
{
get;
set;
}
public string YayinlanmaYili
{
get;
set;
}
}
}