Я столкнулся с проблемой, которая противоречила моим базовым концепциям C # в Модификаторах доступа.Поэтому я создаю пример приложения, воспроизводящего тот же сценарий.
Существует родительская форма с кнопкой нажатия, в случае которой появляется новая форма с DataGridView.Источник данных - это статическая строка, строка и свойства являются внутренними, поскольку я использую все в одном проекте.
К моему удивлению, было сделано 5 строк, поскольку у меня было 5 элементов данных, привязанных к этой сетке, но они былипросто пустые строки.Затем я сделал свойства общедоступными и смог их получить.Все строки были заполнены правильными данными во второй раз.
Родительская форма
namespace SampleApp{
public partial class Form1 : Form
{
List<ItemModel> modelList = new List<ItemModel>();
public Form1()
{
InitializeComponent();
}
private void btnClick_Click(object sender, EventArgs e)
{
LoadData();
using (SeperateWindow window = new SeperateWindow(modelList))
{
window.PopulateGrid();
if(window.ShowDialog() == DialogResult.OK)
{
}
}
}
public void LoadData()
{
for(int i= 0; i < 5; i++)
{
ItemModel item = new ItemModel($"Name { i}", i.ToString());
modelList.Add(item);
}
}
}
Класс модели
namespace SampleApp.Model{
sealed class ItemModel
{
internal string Textvalue { get; set; }
internal string ID { get; set; }
internal ItemModel(string text,string id)
{
Textvalue = text;
ID = id;
}
}
Дочерняя форма, содержащая GridView
namespace SampleApp.Model{
public partial class SeperateWindow : Form
{
List<ItemModel> _modelList = new List<ItemModel>();
internal SeperateWindow(List<ItemModel> modelList)
{
_modelList = modelList;
InitializeComponent();
}
public void PopulateGrid()
{
dataGridView1.DataSource = _modelList;
}
}
Моя проблема в том, что все находится в одном проекте, а класс модели и дочерняя форма тоже находятся в одной папке, а также почему яполучать пустые строки?Учитывая, что это работает нормально, если я сделаю их публичными.