Замена элемента в ListBox
есть ListBox, в который добавляются: Имя, Фамилия, Почта. Нужно по нажатию на элемент ListBox'a заменить его значение. PS При нажатии на кнопку "Добавить" появляется новое окно с тремя компонентами TextBox, в которые вводятся данные, при нажатии на кнопку "Применить" введенные данные добавляются в ListBox Код User.cs
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
Код MAINFORM.cs
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void MainForm_Load(object sender, EventArgs e)
{
}
private void usersList_SelectedIndexChanged(object sender, EventArgs e)
{
string userData = (string)usersList.SelectedItem;
string[] userDataArray = userData.Split(' ');
if (userDataArray.Length != 3)
throw new Exception("Данные повреждены");
User user = new User
{
FirstName = userDataArray[0],
LastName = userDataArray[1],
Email = userDataArray[2]
};
UserDataEditor window = new UserDataEditor(user);
window.ShowDialog();
}
private void AddButton_Click(object sender, EventArgs e)
{
UserDataEditor window = new UserDataEditor();
window.ShowDialog();
User newUser = window.User;
if (newUser != null)
usersList.Items.Add($"{newUser.FirstName}" +
$" {newUser.LastName} {newUser.Email}");
}
}
Код UserDateEditor.cs
public partial class UserDataEditor : Form
{
public User User { get; private set; } = null;
public UserDataEditor(User user = null)
{
InitializeComponent();
if (user != null)
{
User = user;
userFirstNameEditor.Text = User.FirstName;
userLastNameEditor.Text = User.LastName;
userEmailEditor.Text = User.Email;
}
}
private void AcceptButton_Click(object sender, EventArgs e)
{
User = new User
{
FirstName = userFirstNameEditor.Text,
LastName = userLastNameEditor.Text,
Email = userEmailEditor.Text
};
this.Close();
}
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
ответ на первый вопрос (по нажатию на элемент ListBox'a заменить его значение)
UserDataEditor window = new UserDataEditor(user);
window.ShowDialog();
не хватает обработки
User updatedUser = window.User;
...
во втором при нажатии на кнопку "Применить" если делаете ShowDialog(), то пользуйтесь DialogResult для понимания события от закрытия формы.

