2011-08-11 52 views
1

當我雙擊dataGridView單元格時,如何一次打開窗體?如何防止DataGridView雙擊多次打開窗體?

private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) 
{ 
    //string queryString = "SELECT id, thename, address,fax,mobile,email,website,notes FROM movie"; 
    int currentRow = int.Parse(e.RowIndex.ToString()); 
    try 
    { 
     string movieIDString = dataGridView1[0, currentRow].Value.ToString(); 
     movieIDInt = int.Parse(movieIDString); 
    } 
    catch (Exception ex) { } 
    // edit button 
    if (e.RowIndex != -1) 
    { 
     string id = dataGridView1[0, currentRow].Value.ToString(); 
     string thename = dataGridView1[1, currentRow].Value.ToString(); 
     string address = dataGridView1[2, currentRow].Value.ToString(); 
     string fax = dataGridView1[3, currentRow].Value.ToString(); 
     string mobile = dataGridView1[4, currentRow].Value.ToString(); 
     string email = dataGridView1[5, currentRow].Value.ToString(); 
     string website = dataGridView1[6, currentRow].Value.ToString(); 
     string notes = dataGridView1[7, currentRow].Value.ToString(); 

     Form4 f4 = new Form4(); 

     f4.id = movieIDInt; 
     f4.thename = thename; 
     f4.address = address; 
     f4.fax = fax; 
     f4.mobile = mobile; 
     f4.email = email; 
     f4.website = website; 
     f4.notes = notes; 


     f4.Show(); 
    } 
} 

這個代碼打開一個表格,每次我點擊一個DataGridView,我想,如果它被打開,DoubleClick就不會再次打開它

+0

是您曾經參與過Click事件處理程序或DoubleClick事件處理程序的代碼(或CellClick或CellDoubleClick ...)? – digEmAll

+0

dataGridView1_CellMouseDoubleClick – amer

回答

1

將打開的表單保留在類字段
例如,而不是你的代碼,這樣調用一個方法:

Form4 f4 = null; // class field 

    // call this method when cellMouseDoubleClick is triggered 
    private void OpenForm4IfNotOpened() 
    { 
     if (f4 == null || f4.IsDisposed) 
     { 
      f4 = new Form4(); 

      f4.id = movieIDInt; 
      f4.thename = thename; 
      f4.address = address; 
      f4.fax = fax; 
      f4.mobile = mobile; 
      f4.email = email; 
      f4.website = website; 
      f4.notes = notes; 
      f4.Show(); 
     } 
     else 
     { 
      f4.BringToFront(); 
     } 
    } 
+0

digEmAll謝謝:) – amer

+0

@amer:不客氣。無論如何,你應該接受你認爲是正確的答案(不僅在這裏,而且在你的問題之前),因爲這是StackOverflow的工作原理;-) [(鏈接:如何接受答案)](http:// meta。 stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – digEmAll

1

聲明此爲form.cs一個全局變量

bool isopened = false; 

然後用isopened可變檢查

if (isopened == false) 
      { 
       FormInitialSettings(); 
       Form4 f4 = new Form4(); 

       f4.id = movieIDInt; 
       f4.thename = thename; 
       f4.address = address; 
       f4.fax = fax; 
       f4.mobile = mobile; 
       f4.email = email; 
       f4.website = website; 
       f4.notes = notes; 
       isopened = true; 
       f4.Show(); 
      } 
0

最好的辦法是使變量F4一個L級evel變量和行Form4 f4 = new Form4();應該只運行一次,然後行f4.Show();測試,以查看錶單是否已顯示,然後再試圖顯示它。