Как при передачи объекта в dataGridView, найти нужную строку и обновить ее не затрагивая остальные строки. Я делаю вот так: dataGridView.DataSource = editedObj, после этого данные не отображаются.
тут, для начала, нужно определиться, в каком коллекции ты хранишь данные.
например, я сделал небольшой пример с добавлением новой строки и обновлением dataGridView автоматически. Если использовать BindingList
public BindingList<MyTest> Test { get; set; }
public Form1()
{
Test = new BindingList<MyTest>() { new MyTest() { Name = "Тест" } };
InitializeComponent();
dataGridView1.DataSource = Test;
}
public class MyTest
{
public string Name { get; set; }
}
private void Button1_Click(object sender, System.EventArgs e)
{
Test.Add(new MyTest() { Name = "Тест2" });
}
другой пример со сбрасыванием DataSource и присваивании ей нового значения
public List<MyTest> Test { get; set; }
public Form1()
{
Test = new List<MyTest>() { new MyTest() { Name = "Тест" } };
InitializeComponent();
dataGridView1.DataSource = Test;
}
public class MyTest
{
public string Name { get; set; }
}
private void Button1_Click(object sender, System.EventArgs e)
{
Test.Add(new MyTest() { Name = "Тест2" });
dataGridView1.DataSource = null;
dataGridView1.DataSource = Test;
}
На основе твоего ответа: Первая форма(главная)
public BindingList<MyTest> Test { get; set; }
public Form1()
{
Test = new BindingList<MyTest>() { new MyTest() { Name = "Тест", Age = 5 } };
InitializeComponent();
dataGridView1.DataSource = Test;
}
public class MyTest
{
public string Name { get; set; }
public int Age { get; set; }
}
private void Button1_Click(object sender, System.EventArgs e)
{
var editForm = new EditRow(dataGridView1.CurrentRow);
var dialog = editForm.ShowDialog();
if(dialog == DialogResult.Cancel)
{
dataGridView1.CurrentRow.Cells[0].Value = editForm.textBox1.Text;
dataGridView1.CurrentRow.Cells[1].Value = editForm.textBox2.Text;
}
}
вторая форма
public EditRow(DataGridViewRow row)
{
InitializeComponent();
textBox1.Text = row.Cells[0].Value.ToString();
textBox2.Text = row.Cells[1].Value.ToString();
}
private void Button1_Click(object sender, EventArgs e)
{
this.Close();
}
и сделай textBox1 и textBox2 в коде дизайнера public Теперь работает редактирование через новое создаваемое окно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Каким образом возможно передать массиву Intermediate_Cpp[3] класса Course{}; ,который в свою очередь является объектом этого класса,объекты student1, student2,...
При использовании одной в двух обьектах работает только один, второй отказываетсяИгра Кораблики , функция начинает игру и используется в двух...
Если у меня есть header-only библиотека и есть xxxConfigcmake, я делаю find_package(xxx CONFIG REQUIRED)