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;
using System.Xml.Linq;
namespace KeyApp
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
try
{
// Xml Datei wird geladen..
string path = @"Datenbank.xml";
foreach (var node in XDocument.Load(path).Root.Elements("Item"))
{
// Die ListView wird zugewiesen / Einträge werden hinzugefügt..
var lvi = new ListViewItem(node.Attribute("Name").Value);
lvi.SubItems.Add(node.Attribute("Key").Value);
lvi.SubItems.Add(node.Attribute("Art").Value);
listView1.Items.Add(lvi);
}
}
catch
{
// Wenn keine Datenbank vorhanden war, erscheint eine Fehlermeldung..
MessageBox.Show("Die Datenbank konnte nicht geladen werden.\nEs wird jetzt eine neue Datenbank erstellt.");
// Datei wird erstellt..
string path2 = @"Datenbank.xml";
var doc = new XDocument(new XElement("Datenbank"));
foreach (var item in listView1.Items.OfType<ListViewItem>())
{
var el = new XElement("Item");
el.SetAttributeValue("Name", item.SubItems[0].Text);
el.SetAttributeValue("Key", item.SubItems[1].Text);
el.SetAttributeValue("Art", item.SubItems[2].Text);
doc.Root.Add(el);
}
doc.Save(path2);
}
string benutzername = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
this.stBenutzer.Text = "Benutzer: " + benutzername;
string items = listView1.Items.Count.ToString();
this.stEinträge.Text = "Einträge: " + items;
}
private void tsNeuerEintrag_Click(object sender, EventArgs e)
{
frmAdd add = new frmAdd();
add.ShowDialog();
if (add.DialogResult == DialogResult.OK)
{
if (add.txtKey.TextLength == 0 || add.txtName.TextLength == 0)
{
MessageBox.Show("Eintrag ungültig.");
}
else
{
string name = add.txtName.Text;
string key = add.txtKey.Text;
string art = add.cbArt.Text.ToString();
ListViewItem item = listView1.Items.Add(name);
item.SubItems.Add(key);
item.SubItems.Add(art);
}
}
string items = listView1.Items.Count.ToString();
this.stEinträge.Text = "Einträge: " + items;
}
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
//Speichern
string path = @"Datenbank.xml";
var doc = new XDocument(new XElement("Datenbank"));
foreach (var item in listView1.Items.OfType<ListViewItem>())
{
var el = new XElement("Item");
el.SetAttributeValue("Name", item.SubItems[0].Text);
el.SetAttributeValue("Key", item.SubItems[1].Text);
el.SetAttributeValue("Art", item.SubItems[2].Text);
doc.Root.Add(el);
}
doc.Save(path);
}
private void tsZwischenablage_Click(object sender, EventArgs e)
{
try
{
string copy = this.listView1.SelectedItems[0].SubItems[1].Text;
Clipboard.SetText(copy);
}
catch
{
MessageBox.Show("Es wurde kein Eintrag ausgewählt.");
}
}
private void tsaLöschen_Click(object sender, EventArgs e)
{
try
{
listView1.SelectedItems[0].Remove();
}
catch
{
MessageBox.Show("Es wurde kein Eintrag zum Löschen ausgewählt.");
}
string items = listView1.Items.Count.ToString();
this.stEinträge.Text = "Einträge: " + items;
}
private void alleEinträgeLöschenToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Sollen wirklich ALLE Einträge gelöscht werden?", "Achtung!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
try
{
listView1.Items.Clear();
}
catch
{
MessageBox.Show("Es sind keine Einträge zum Löschen vorhanden.");
}
}
else if (result == DialogResult.No)
{
//nichts passiert.
}
string items = listView1.Items.Count.ToString();
this.stEinträge.Text = "Einträge: " + items;
}
private void tsBearbeiten_Click(object sender, EventArgs e)
{
try
{
frmAdd edit = new frmAdd();
string name = this.listView1.SelectedItems[0].Text;
string key = this.listView1.SelectedItems[0].SubItems[1].Text;
string art = this.listView1.SelectedItems[0].SubItems[2].Text;
edit.txtName.Text = name;
edit.txtKey.Text = key;
edit.cbArt.Text = art;
edit.ShowDialog();
if (edit.DialogResult == DialogResult.OK)
{
this.listView1.SelectedItems[0].Remove();
if (edit.txtKey.TextLength == 0 || edit.txtName.TextLength == 0)
{
MessageBox.Show("Eintrag ungültig.");
}
else
{
string namenew = edit.txtName.Text;
string keynew = edit.txtKey.Text;
string artnew = edit.cbArt.Text.ToString();
ListViewItem item = listView1.Items.Add(namenew);
item.SubItems.Add(keynew);
item.SubItems.Add(artnew);
}
}
}
catch
{
MessageBox.Show("Es wurde kein Eintrag ausgewählt.");
}
string items = listView1.Items.Count.ToString();
this.stEinträge.Text = "Einträge: " + items;
}
private void tsshowkey_Click(object sender, EventArgs e)
{
try
{
frmShowKey showkey = new frmShowKey();
string key = this.listView1.Items[0].SubItems[1].Text;
showkey.txtKey.Text = key;
showkey.Show();
}
catch
{
MessageBox.Show("Es wurde kein Eintrag ausgewählt.");
}
}
private void tsInfo_Click(object sender, EventArgs e)
{
frmInfo info = new frmInfo();
info.ShowDialog();
}
}
}