#c# #csv #datagridview
Вопрос:
Я читаю файл csv , а затем загружаю значения этого csv в представление данных. Это работает , но теперь , когда я пытаюсь обновить содержимое представления данных через заданный интервал, оно не обновляется, причина обновления в том, что файл csv обновляется новыми значениями из другой программы, поэтому , когда файл csv обновляется, представление данных не обновляется.
Вот мой код :
namespace ST_4
{
public partial class Watchlist : Form
{string fileName;
string AppDataPath;
string MQFiles;
public Watchlist()
{
InitializeComponent();
Watchlist_Load();
}
public void timer2_Tick(object sender, EventArgs e)
{
dataGridView2.Update();
dataGridView2.Refresh();
Application.DoEvents();
}
public void Watchlist_Load()
{
AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
MQFiles = AppDataPath "\Files";
List<ElementsWatch> records;
using (var reader = new StreamReader(MQFiles "\Watchlist.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
records = csv.GetRecords<ElementsWatch>().ToList();
}
dataGridView2.DataSource = records;
}
}
}
Я совсем новичок в C#, поэтому я все еще пытаюсь и тестирую, но, прочитав несколько статей, я подумал dataGridView2.Update() amp; dataGridView2.Refresh()
, что следует обновить содержимое datagridview ? является ли это предположение неверным ?
Комментарии:
1. Как обновить ? какого поведения вы ожидаете ? Вы изменяете csv-файл и ожидаете обновления в пользовательском интерфейсе ?
2. Что-нибудь обновляет содержимое
DataSource
для представления данных? Это не изменит то, что отображается в пользовательском интерфейсе, если базовые данные не изменились.3. Да, если это возможно ? Я ожидаю, что когда в csv-файл будет добавлено больше данных, то datagridview также должен отображать эти недавно добавленные данные ?
4. @Andrew H нет , источник не обновляется, будет ли обновление источника перезагружать весь DataGridView? Или он просто добавит новый контент, если таковой будет?
5. У вас есть две вещи, конкурирующие за вашу сетку данных, поэтому нет волшебного способа сделать это, не прибегая к сложной синхронизации. При этом, как предполагается, что конечный пользователь будет взаимодействовать с сеткой, в которую каждые три секунды записываются данные? Это непрактично. Я бы просто добавил кнопку, которая перезагружает данные по запросу пользователя.