2011-07-25 86 views
0

在C#的WinForms我正在寫一個程序,它從串行端口中讀取的值,並根據所接收的值它顯示在圖片框的圖像:如果該值是X,它將顯示圖像1和如果值爲Y,它將顯示image2 ...等等。C#串行端口圖象框問題

當我接收到的第一值,程序將顯示所述第一圖像V;好,但是當收到第二個值時,不會顯示新圖像:即使值已更改,也只顯示相同的圖像。圖片框不會更改圖像。

我嘗試picturebox.Refresh()picturebox.Invalidate(),但不起作用。

感謝

這是一些代碼,設置圖片:

if (value == "X") 
{ 
    path = "c:\\c#\\image1.png"; 
    pictureBox1.Invoke(new OutputUpdateDelegate (OutputUpdateCallback1),path); 
} 

if (value == "Y") 
{ 
    path = "c:\\c#\\image2.png"; 
    pictureBox1.Invoke(new OutputUpdateDelegate(OutputUpdateCallback1), path); 
} 

delegate void OutputUpdateDelegate(string data); 

private void OutputUpdateCallback1(string data) 
{  
    pictureBox1.Image = Image.FromFile(data); 
} 
+0

請發表一些代碼請!!! – Marco

+0

添加設置圖片的代碼。另外,你確定代碼被調用嗎? –

+0

這是一些代碼,來顯示圖像: – Soso

回答

0

試試這個

if (value == "X") 
{ 
    path = "c:\\c#\\image1.png"; 
    pictureBox1.Invoke(new OutputUpdateDelegate (OutputUpdateCallback1),path); 
} 

if (value == "Y") 
{ 
    path = "c:\\c#\\image2.png"; 
    pictureBox1.Invoke(new OutputUpdateDelegate(OutputUpdateCallback1), path); 
} 

delegate void OutputUpdateDelegate(string data); 

private void OutputUpdateCallback1(string data) 
{  
    pictureBox1.Image = Image.FromFile(data); 
} 

我刪除了一些括號 「}」,這似乎是放置錯了 - 雖然不知道,因爲有是不夠的來源,以確保...

編輯:

要進一步diagonse把pictureBox1.Image = Image.FromFile(data);斷點,看看什麼值的數據是...

+0

感謝Yahia ......它現在運作良好 – Soso