Ich habe zuvor ein Programm erstellt, das Daten aus einer Textdatei in einer Listview anzeigt. Benutzer können auf einen Namen in der Listenansicht klicken und die Telefonnummer für diesen Namen anzeigen. Jetzt versuche ich, dem Programm ein neues Formular hinzuzufügen, das es dem Benutzer ermöglicht, einen Namen aus einer Combobox auszuwählen, der dann den Namen in einem Textfeld anzeigt und einem Benutzer erlaubt, den Namen zu ändern und in der Textdatei zu speichern.Ändern einer Methode zu einer freigegebenen Methode, auf die in einem anderen Formular zugegriffen werden kann
Anyways, Ich versuche, das Load-Ereignis aus dem ursprünglichen Programm zugänglich in der neuen Form zu machen, und ich kann nicht scheinen, um herauszufinden, wie das zu tun. Hier ist mein Code:
public partial class VendorsDictionary : Form
{
public VendorsDictionary()
{
InitializeComponent();
}
private Dictionary<string,string> vendorPhones = new Dictionary<string,string>();
public void VendorsDictionary_Load(object sender, EventArgs e)
{
string currentLine;
string[] fields = new string[2];
StreamReader vendorReader = new StreamReader("Vendor.txt");
while (vendorReader.EndOfStream == false)
{
currentLine = vendorReader.ReadLine();
fields = currentLine.Split(',');
vendorPhones.Add(fields[1], fields[6]);
string[] name = { fields[1] };
string[] city = { fields[3] };
string[] state = { fields[4] };
string[] zipcode = { fields[5] };
string[] phone = { fields[6] };
for (int i = 0; i < name.Length; i++)
{
lvDisplay.Items.Add(new ListViewItem(new[] { name[i], city[i], state[i], zipcode[i] }));
}
}
vendorReader.Close();
}
private void lvDisplay_SelectedIndexChanged(object sender, EventArgs e)
{
if (lvDisplay.SelectedItems.Count>0)
{
ListViewItem item = lvDisplay.SelectedItems[0];
lblName.Text = item.SubItems[0].Text;
lblPhone.Text = vendorPhones[item.SubItems[0].Text];
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
UpdateVendor updateVendor = new UpdateVendor();
updateVendor.Show();
}
}
Ich habe versucht, es zu statischen und einer Reihe von anderen Ideen zu ändern ich hier gefunden habe, aber kann nicht scheinen, um es an die Arbeit. Jede Hilfe wäre willkommen!
Warum brauchen Sie die 'VendorsDictionary_Load' Funktion? Wenn Sie diese Funktion verwenden, werden nur Ergebnisse in 'lvDisplay' gespeichert. – Ben
Mögliches Duplikat von [Wie teile ich Daten zwischen Formularen?] (Http://stackoverflow.com/questions/3800603/how-to-share-data-between-forms) –
Erstellen Sie eine öffentliche Eigenschaft auf Ihrem 'UpdateVendor'-Formular (nennen wir es' public stringName; ') und setzen Sie es auf das ausgewählte Combobox-Element (name). Verwenden Sie' updateVendor.ShowDialog(); ', um das Formular zu starten (' ShowDialog() 'wird die Ausführung auf Ihrem' VendorsDictionary' Formular blockieren, bis das 'updateVendor' Formular geschlossen ist. Dann können Sie die' updateVendor.Name' Eigenschaft überprüfen und Sie haben den Namen, den der Benutzer ausgewählt hat. –