День добрый, реализовываю замену элемента в массиве по индексу через DGV. Выглядит следующим образом (получаю значение элемента по выделенной ячейке DGV):
private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
string s = dataGridView1.CurrentCell.Value.ToString();
textBox1.Text = s;
}
Вопрос вот в чем, каким образом можно получить индекс элемента в выбранной ячейке? Пробовал следующим образом, но не вышло, получаю общий размер массива:
textBox2.Text = a.GetLength(0).ToString() + " // " + a.GetLength(1).ToString();
Чтоб не заниматься бестолковой ерундой, т.е. не писать такое
textBox1.Text = "Фигня";
или
var selectedCell = dataGridView1.CurrentCell.Value.ToString();
Уже во второй версии Windows Forms были придуманы Data Bindings или по-русски Привязка данных.
Допустим мы в программе работаем с классом
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
Создадим такой интерфейс
У DGV создадим необходимые столбцы с указанием к какому свойству необходимо привязаться
Для привязывания коллекции людей к DGV и текстбоксам, будем использовать класс BindingSource
Вот код формы с комментариями
public partial class MainView : Form
{
//данные для приложения
private AppDataContext _data = new AppDataContext();
//источник данных (Люди) для контролов
private BindingSource _bsPeople = new BindingSource();
public MainView()
{
InitializeComponent();
//установка привязок
SetBindings();
//загрузка данных
LoadData();
//настройка окна
this.StartPosition = FormStartPosition.CenterScreen;
this.Text = "Пример работы с привязками";
}
private void SetBindings()
{
//определяем тип источника данных
_bsPeople.DataSource = typeof(List<Person>);
//привязка для DGV
_dataGridViewPeople.AutoGenerateColumns = false;
_dataGridViewPeople.DataSource = _bsPeople;
//привязка у текстбоксов
_textBoxFirstName.DataBindings.Add("Text", _bsPeople, nameof(Person.FirstName));
_textBoxLastName.DataBindings.Add("Text", _bsPeople, nameof(Person.LastName));
}
private void LoadData()
{
_bsPeople.DataSource = _data.GetPeople();
}
}
И так это работает
Заметьте мы установили только привязки. Мы в DGV не занимаемся поиском выбранного человека и извлечением данных из его свойств, все за нас делают привязки!
Пример можно скачать здесь
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу отыскать компилятор в JetBrains RiderПрошу указать путь к папке в которой он находится
Создаю проект за проектом и вот этоЕррор за еррором
Необходимо реализовать программу Которая рассчитывает например окружность, трапецию и параболу