#c# #winforms
#c# #winforms
Вопрос:
Я пишу приложение для телефонной книги.
У меня есть listview, в котором вы можете просматривать сохраненные данные в базе данных. Я хочу добавить опцию редактирования.
Более конкретно: когда я отмечаю строку в таблице с подписчиками и номерами телефонов и нажимаю кнопку Редактирования, на экране отображается окно с двумя текстовыми полями. В первом текстовом поле указывается имя, а во втором — номер телефона отмеченной записи.
Можете ли вы сказать мне, как это сделать?
Ответ №1:
вы можете сделать так…
Да, но TextBox и ListView находятся в разных окнах, и я не могу получить к ним доступ друг к другу
в form2 перетащите два текстовых поля и сделайте вот так….
Просто создайте свойство в классе Form2 и установите его перед отображением Form2.
public class Form2
{
public string Name
{
get { return textbox1.Text; }
set { textbox1.Text = value; }
}
public string phonenumber
{
get { return textbox2.Text; }
set { textbox2.Text = value; }
}
}
public class Form1
{
private void btnedit_Click(object sender, eventargs e)
{
for (int i = 0; i < lv.Items.Count; i )
{
// is i the index of the row you selected?
if (lv.Items[i].Selected == true)
{
//I show here the second field text (SubItems[1].Text) from the selected row(Items[i])
Message.Show(lv.Items[i].SubItems[1].Text);
break;
}
}
Form2 frm2 = new Form2();
frm2.Name= text1;
frm2.phonenumber = text2;
frm2.Show();
this.Hide(); //// if you want to hide the form1
}
}
}
Надеюсь, это вам поможет….
Комментарии:
1. Я сделал это и скомпилировал его без проблем, но когда я нажимаю кнопку редактирования, я получаю исключение: «InvalidArgument = Значение ‘2’ недопустимо для ‘index’. Имя параметра: индекс» для этой строки
string number = listView.SelectedItems[0].SubItems[2].Text;
2. @Владислав Найденов Я отредактировал свой ответ, взгляните на мой ответ
3. Большое спасибо. Я обнаружил ошибку. Я меняю значения индексов подпунктов, и это работает.
Ответ №2:
используйте событие щелчка мыши, например,
private void ListBox1_MouseClick(System.Object sender, System.Windows.Forms.MouseEventArgs e)
{
this.TextBox1.Text = this.ListBox1.SelectedItem;
}
Комментарии:
1. Да, но TextBox и ListView находятся в разных окнах, и я не могу получить к ним доступ друг к другу.
2. если текстовое поле управляет только в другой форме, или вам нужно объявить конструктор в форме, в которой находится текстовое поле, который передает параметры, выбранные в listview из основной формы, или иным образом объявить свойства и улучшить их с помощью выбранного элемента.