In diesem Schülerverzeichnis von mir habe ich ein Listenfeld im Hauptformular und in meiner zweiten Form habe ich Student hinzugefügt. In dieser zweiten Form füge ich dem Namen Textfeld und den Zahlen für den Schüler einen Namen hinzu, die durch Rohrzeichen ("|") getrennt werden müssen. Nachdem der Name und die Zahlen in den Textfeldern ausgefüllt sind, wenn der Benutzer den OK-Knopf drückt, sollte er wie die hartcodierten Schüler unten aussehen. Code untenSo übertragen Sie Informationen aus Textfeldern in ein Listenfeld in einem anderen Formular
erste Form
private void listForm1_SelectedIndexChanged(object sender, EventArgs e)
{
string val = listForm1.GetItemText(listForm1.SelectedItem);
string[] valArray = val.Split('|');
int sum = 0;
int scores = 0;
for (int i = 1; i < valArray.Length; i++)
{
int num = Convert.ToInt32(valArray[i]);
sum += num;
scores++;
}
int average = sum/scores;
txtAverage.Text = average.ToString();
txtTotal.Text = sum.ToString();
txtScoreCount.Text = scores.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
listForm1.Items.Add("Hamish Overtone" + "|" + 39 + "|" + 12 + "|" + 85);
listForm1.Items.Add("Claudia Dye" + "|" + 44 + "|" + 56 + "|" + 85);
listForm1.Items.Add("Mike Layne" + "|" + 12 + "|" + 47+ "|" + 28);
}
zweite Form
private void btnADDSCORE_Click(object sender, EventArgs e)
{
string userInput = txtNewScore.Text;
txtNewScores.Text = txtNewScores.Text + " " + userInput;
txtNewScore.Text = String.Empty;
}
private void btnNewOk_Click(object sender, EventArgs e)
{
}
private void txtNewName_TextChanged(object sender, EventArgs e)
{
}
}
ERRORING PART:
private void listForm1_SelectedIndexChanged (object sender, EventArgs e) {
// Get the value from the selected item
string val = listForm1.GetItemText(listForm1.SelectedItem);
// Split the item's value to a string array according to the pipe char
string[] valArray = val.Split('|');
int sum = 0;
int scores = 0;
// Iterate through all possible values and sum it up,
// while keeping count to how many numbers there are:
for (int i = 1; i < valArray.Length; i++)
{
int num = Convert.ToInt32(valArray[i]);
sum += num;
scores++;
}
// Calculate the average.
// Keep in mind using an integer will create a whole number, without decimal points.
int average = sum/scores;
// Place the average and the sum in textboxes
txtAverage.Text = average.ToString();
txtTotal.Text = sum.ToString();
txtScoreCount.Text = scores.ToString();
}
Wenn ich erhalte dieses Recht, Ihr Hauptformular, das ein Listenfeld hat öffnet die zweite Form auf, und dort, sobald Sie Daten eingegeben haben und auf OK klicken, möchten Sie diese Daten zurück zum Hauptformular übertragen? Ist das Ihre Anforderung? – Sach
Ja, also gibt es in meiner Hauptform ein Listenfeld mit den drei hartcodierten Schülern. Wenn Sie einen neuen Schüler hinzufügen, öffnet sich das zweite Formular mit einem Namensfeld und einem Nummernfeld. Sobald das Formular ausgefüllt ist und der Benutzer die OK-Taste drückt, wird der Schüler in das Listenfeld von form1 übertragen. – User3283827
All diese Informationen sind für diese Frage unnötig. Was Sie brauchen, ist, wie Sie Daten zwischen zwei Fenstern übertragen. Sie sollten zuerst herausfinden, was Ihre Frage ist. Außerdem, wenn Sie hier gegoogelt oder gesucht haben, gibt es eine Menge Fragen wie diese. – Sach