2012-05-30 14 views
0

目前,我的應用程序顯示6個圖片框,每個圖片框顯示不斷更新的圖片。如何將picturebox擴展爲另一種形式?

現在,我需要點擊圖片框延伸的任何圖片框並填充整個屏幕,只顯示所選圖片框。

這可能嗎?我必須創建另一個表單來執行此操作嗎?

由於事先 Perumal

+0

WPF,WinForms的? –

+0

它適用於使用WinForms的桌面。 – perumal316

回答

2
在每個圖片框的onclick事件

(他們都可以點這個相同的方法)

picturebox_Click(object sender .....) 
{ 
    PictureBox pb= (PictureBox)sender; 
    if (pb.dock==DockStyle.None) 
     { 
      pb.dock=DockStyle.Fill; 
      pb.BringToFront(); 
     } 
    else 
     pb.dock=DockStyle.None; 
} 
2

沒有看到任何代碼,這裏是你如何通過編程改變點擊圖片框。

pictureBox1.Dock = DockStyle.Fill 

所以,你需要在單擊事件處理程序創建並調用您的圖片框的Dock功能,像上面。在迴應評論

更新有一個DockStyle.None恢復圖片回原來的大小。

如果我理解正確的話,你想擁有6張圖片,然後當你點擊一個它填補,再次點擊,縮小,點擊一個又一個,填充等等...

要做到這一點,你會在圖片框上使用Dock和Visible屬性。現在看起來好像你正在詢問如何來實際編寫代碼。那麼,如果你表現出一定的代碼,我可以指點,什麼也沒有去我接近它的辦法是:

  1. 將列表中的所有圖片框,並分配一個狀態給他們BigSmall

  2. 爲每個圖片框編寫一個OnClick以更改單擊的圖片框的狀態。

  3. 然後,每個OnClick調用一個幫助器函數,該函數遍歷列表中的每個圖片框並隱藏小圖片和DockStyle。填充大圖片。

上述算法是否能夠完成您所需要的功能?

+0

嗨喬,但使用這種方法的圖片填滿了屏幕,但其他圖像仍然可見。其他圖像仍然顯示,並且此選擇的圖像填滿整個屏幕。我如何才能讓所選圖像出現並填滿屏幕? – perumal316

+0

如果只有其中6個'picturebox2.Visible = false',您可以通過編程方式隱藏它們。 – Joe

+0

@joe - 我不確定您的表單的外觀如何,但您打算如何回到原始屏幕。以下是我認爲您的應用的外觀。你有六個圖片框在一個窗體中。如果你點擊一個圖片框應該覆蓋整個表格,並且只顯示那個圖片框中的圖片。所以可以說你想點擊圖片框2.你打算怎麼做?原諒我,我不完全明白。但多一點的信息會幫助我幫助你。 –

-1

嘗試這樣的事情。代碼不重因素,但我相信你能做到這一點

private bool isfill = false; 

     private void pictureBox1_Click(object sender, EventArgs e) 
     { 
      if (!isfill) 
      { 
       pictureBox1.Dock = DockStyle.Fill; 
       pictureBox2.Visible = false; 
       isfill = true; 
      } 
      else 
      { 
       pictureBox1.Dock = DockStyle.None; 
       pictureBox2.Visible = true; 
       isfill = false; 
      } 
     } 

     private void pictureBox2_Click(object sender, EventArgs e) 
     { 
      if (!isfill) 
      { 
       pictureBox2.Dock = DockStyle.Fill; 
       isfill = true; 
       pictureBox1.Visible = false; 
      } 
      else 
      { 
       pictureBox2.Dock = DockStyle.None; 
       isfill = false; 
       pictureBox1.Visible = true; 
      } 
+0

提供了很多圖片框,但它會很難看,但它會起作用。對於任何不止這些,這段代碼將是頁面和頁面長... – Joe

+0

據我所知,這就是爲什麼我提到代碼不被重新考慮。由於所有事件處理程序中的功能都是相同的,因此可以將其放入不同的方法中,並在每個圖片框的事件處理程序中調用該方法。你甚至可以通過創建一個帶有代碼的通用事件處理程序,然後將其分配給所有圖片框來進一步改進代碼。在這種情況下,您必須將發件人傳遞給方法。 –

+0

但是在每個圖片中,你仍然需要複製/粘貼每個其他圖片框的可見和碼頭樣式,對於n個圖片框,即n * n行,本質上寫入n次相同的東西。順便說一下,事件處理程序是不一樣的,因爲每個圖片盒需要知道使所有其他的圖片不可見......如果所有的圖片都在列表中,那麼寫入和讀取會更加痛苦。 – Joe

相關問題