2017-04-16 50 views
1

我有一個datagridview來顯示來自文本文件的數據。然後,我有一個按鈕,它具有刪除文本文件上的內容的功能(將其返回到0字節)。刪除源文件後數據網格不會改變

但是,爲什麼事件執行(通​​過單擊按鈕),即使使用.refresh()函數,數據網格也不會刷新。這是我在代碼上刪除文件內容的按鈕。

private void button1_Click(object sender, EventArgs e) 
{ 
     File.WriteAllText("Transaction.txt", String.Empty); 
     dataGridView1.Refresh(); 
} 

PS:只有在重新啓動Windows窗體後,datagridview纔會更改(當然爲空)。

+0

你必須重新綁定,而不是刷新。網格不會自動與數據同步,除非您使用'BindingSource',並且使用文本文件來做到這一點,則需要在某種枚舉中包裝文件訪問權限。 – Crowcoder

+0

顯示如何將數據加載到'DataGridView'?至少你需要讀取文件並重新加載數據。 – Fabio

+0

Hi @iMar我只是想知道我是否已經解決了您的問題。 – Anthony

回答

0

您需要BindingList類將數據綁定到您的datagridview:

var _bindingList = new BindingList<string>(); 

並在窗體的構造函數:

public MyForm 
{ 
    InitializeComponent(); 
    myDataGridView.BindingSource = _bindingList; 
} 

創建一個定時器來監視文件的變化:

DateTime lastWriteTime = DateTime.Now 
private void timer_tick(object sender, EventArgs e) 
{ 
    FileInfo f = new FileInfo("C:\\myFile.txt"); 
    if (lastWriteTime == f.LastWriteTime) return; 
    lastWriteTime = f.LastWriteTime; 
    UpdateBindingList(); 
} 

private void UpdateBindingList() 
{ 
    _bindingList.Clear(); 
    //then read the file and add items to _bindingList. 
} 
相關問題