Hallo Th69,
aber wenn ich die Referenz entferne, dann kann ich nicht mehr auf die Listview in Form1 zu greifgen.
Dann erhalte ich die Fehlermeldung "listview1 ist im Kontext nicht vorhanden."
PS:
Kann man evtl. mein kleines Projekt auch nur auf eine Form begrenzen, dann müsste ich nicht so viel googln.
Ich möchte das Projekt, wenn es machbar ist, zeitnah erledigen und so schlicht wie einfach halten.
Ich habe auch deinen Beitrag mit den zwei Formen angeschaut, werde daraus leider nicht schlauer, wie ich die Daten dann von den
Textboxen in die Listview einpflegen kann und diese Liste dann zusammen mit der Textbox für die Version danach serialisiere.
Trotzdem Danke für die tollen Vorschläge, habe die letzten Tage auf Nacht mal ein stündchenweise mir das im INet rausgesucht und gelesen.
Leider habe ich keine so richtig passende Infos finden können, die auch einen Praxisteil enthalten.
Mit freundlichen Grüßen
ThaKilla
Hallo, wie könnte ich das am besten machen?
Über eine DataSource Datei mit zwei Tabellen oder in der Code-Ansicht?
Ich habe es über Einbindung einer Klasse versucht, wo ich meine Daten klassifiziert habe. Leider ohne Erfolg 😔
Leider habe ich das im ersten Post nicht erwähnt, aber ich bin ein kompletter Neuling auf diesem Gebiet und versuche mich gleich an sowas kompliziertem.
Das sollte eigentlich ein kleiner Updater + Update-Maker sein mit ich ich eine Fotogalerie für Familienfotos verwalte.
Leider komme ich nur langsam voran, aber jede kleine Unterstützung bringt mich einen kleinen Schritt voran.
Danke euch allen
Mit freundlichen Grüßen
ThaKilla
Hallo nochmals zusammen,
ich habe in den letzten Tagen viel im Internet nach einer Lösung gesucht um mein Problem zu lösen.
Was ich meistens gelesen habe ist, da die meisten Lösungen auf eine DataGridView verweisen.
Leider verwenden die meisten nur eine DGV und serialisieren diese zu einer XML Datei.
Da ich aber mehrere und unterschiedliche Daten speichern will gehen diese Vorschläge nicht.
Ich habe ein bisschen an meinen Code gefeilt, aber habe ein Problem, dass ich wahrscheinlich nicht auf die schnelle Weise lösen kann.
Und zwar da erhalte ich ein ERROR : "table"-Argument darf nicht null sein. Parametername: table
private void btnXML_Click(object sender, EventArgs e)
{
DataSet dataSet1 = new DataSet();
dataSet1.AcceptChanges();
DataSet dataSet2 = new DataSet();
dataSet2.AcceptChanges();
DataTable data = (DataTable)(ConfigData.DataSource);
DataTable data2 = (DataTable)(ConfigVersion.DataSource);
dataSet1.Tables.Add(data);
dataSet2.Tables.Add(data2);
try
{
dataSet1.Merge(dataSet2);
dataSet1.WriteXml(savefile);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Der ERROR wird in der Zeile angezeigt
DataTable data = (DataTable)(ConfigData.DataSource);
Mit freundlichen Grüßen
ThaKilla
Hallo "Abt",
kannst du mir das Anhand eines Praxisbeispieles das zeigen? Das würde bei meiner Sache schneller helfen, mit Kindern zu Hause würde ich wieder monatelang dran sitzen. So könnte ich das evtl. besser verstehen und einige kleine Projekte machen und testen ob ich das gelernte auch in die Tat umsetzen kann.
Wäre dir und weiteren Helfern sehr verbunden.
Gruß
ThaKilla
Hallo liebe Community,
ich weiß nicht ob ich hier in dem richtigen Abteilung bin. Falls nicht, dann bitte in den passenden Bereich verschieben. Danke.
So nun zu meinem Thema. Ich bin in C# betreffend noch ein Anfänger und wollte mir einen kleinen Data-Updater machen, denn ich gerne privat nutzen würde. Seit knapp einem Monat jedoch komme ich nicht weiter. Ich hoffe Ihr könnt mir da weiterhelfen.
So Sieht mein Projekt gerade aus. Ich habe zwei Formen. Von der AddForm werden die Daten von 3 Textboxen in eine ListView eingepflegt. Diese will ich dann zusammen mit dem Inhalt einer Textbox(Version) in XML-Datei speichern.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Globalization;
using System.Xml.Serialization;
namespace M.T.UpdateMaker
{
public partial class UpdateMaker : Form
{
public UpdateMaker()
{
InitializeComponent();
currentCulture = CultureInfo.CurrentCulture;
}
String ListViewItemsXML = "UpdateInfo.xml";
public List<myObject> ListViewItems = new List<myObject>();
CultureInfo currentCulture;
private void setVisibility()
{
if (File.Exists(ListViewItemsXML))
{
ListViewItems = Utilities.XMLSaver.DeserializeFromXML(ListViewItemsXML);
foreach (myObject mo in ListViewItems)
{
ListViewItem item = new ListViewItem(mo.Name);
item.SubItems.Add(mo.Description);
listView1.Items.Add(item);
}
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
AddForm Af = new AddForm(this);
Af.ShowDialog();
}
private void btnGenerate_Click(object sender, EventArgs e)
{
if (!File.Exists(ListViewItemsXML))
{
Utilities.XMLSaver.SerializeToXML(ListViewItems, ListViewItemsXML);
}
}
private void btnLoadXML_Click(object sender, EventArgs e)
{
setVisibility();
}
private void btnClear_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
}
}
// Serialisierungsversuch
[Serializable]
[XmlType("Data-Source")]
public class myObject
{
public string Name { get; set; }
public string Description { get; set; }
public string Status { get; set; }
public string BuildVersion { get; set; }
}
}
using System;
using System.Windows.Forms;
namespace M.T.UpdateMaker
{
public partial class AddForm : Form
{
private readonly UpdateMaker um;
public AddForm(UpdateMaker updateMaker)
{
InitializeComponent();
um = updateMaker;
}
private void btnOk_Click(object sender, EventArgs e)
{
string[] row1 = {txtDesc.Text, txtStatus.Text};
um.listView1.Items.Add(txtName.Text).SubItems.AddRange(row1);
myObject myObject = new myObject();
myObject.Name = txtName.Text;
myObject.Description = txtDesc.Text;
myObject.Status = txtStatus.Text;
um.ListViewItems.Add(myObject);
this.Close();
}
}
}
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace M.T.UpdateMaker.Utilities
{
public static class XMLSaver
{
//Instead of creating xml documents from scratch you can serailize them into xml and save them all in one step
public static void SerializeToXML(List<myObject> ListViewItems, string path)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<myObject>));
TextWriter textWriter = new StreamWriter(path);
serializer.Serialize(textWriter, ListViewItems);
textWriter.Close();
}
public static List<myObject> DeserializeFromXML(string path)
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<myObject>));
TextReader textReader = new StreamReader(path);
List<myObject> ListviewItems;
ListviewItems = (List<myObject>)deserializer.Deserialize(textReader);
textReader.Close();
return ListviewItems;
}
}
}
Das wird als XML-Datei erzeugt:
<ArrayOfDataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Data-Source>
<Name>fsdfa</Name>
<Description>xyvyxv</Description>
<Status>Ready ...</Status>
</Data-Source>
<Data-Source>
<BuildVersion>1.0.0.1</BuildVersion>
</Data-Source>
</ArrayOfDataSource>
Ich würde aber gerne dass die BuildVersion eine eigene Bezeichnung hat und nicht die Data-Source.
Ich serializiere eine Listview als Data-Source und die BuildVersion von einer TextBox.
Eigentlich würde ich das gerne in diesem Format haben:
<ArrayOfDataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<BuildVersion>
<Version>1.0.0.1</Version>
</BuildVersion>
<DataList>
<Name>Eintrag1</Name>
<Description>Mein erster Text</Description>
<Status>Ready ...</Status>
</DataList>
<DataList>
<Name>Eintrag2</Name>
<Description>Mein zweiter Text</Description>
<Status>Ready ...</Status>
</DataList>
</ArrayOfDataSource>
Für alle, die sich die Zeit nehmen das hier zu lesen bzw. zu beantworten, vielen lieben Dank schon mal im Voraus
Gruß
ThaKilla