2011-03-26 43 views
0

我正在創建一個類似會計的軟件並執行總帳。現在我的計劃是有一個名爲Entry的UserControl,它顯示並具有名爲Date,Details,Amount的屬性。我有兩個FlowLayoutControls,一個用於借方,一個用於信用。如何確定哪個UserControl位於FlowLayoutPanel的頂部?

我想達到的目標:

正如我滑下借方,我想信貸自動滑下來用相同或附近日期的條目。或者到同一個月,當總帳是平衡的。

我的想法:

確定最高可見用戶控件,得到它的日期值。然後在另一邊,瀏覽每個UserControl及其Date值並將其滾動到最符合上述說明的那個值。

任何人都可以幫助我與FlowLayoutPanels的編碼和屬性,以實現這一目標嗎?

謝謝。

回答

1

實施FLP的滾動事件。迭代其控制,並找出哪一個是位於頂部:

private void flowLayoutPanel1_Scroll(object sender, ScrollEventArgs e) { 
     var top = new Point(1, 1); // tweak if necessary 
     foreach (Control ctl in flowLayoutPanel1.Controls) { 
      if (ctl.Bounds.Contains(top)) { 
       // Found the control, do your stuff 
       //... 
       break; 
      } 
     } 
    } 

演員的CTL到您的用戶控制型和檢索所需的屬性。然後迭代另一個FLP以找到匹配的控件,將FLP的AutoScrollPosition設置爲滾動到視圖中。

+0

作品!謝謝。工作點是(3,0)。我也加了(3,7)。發生的情況是,有時候控制不在視圖中,但由於FLP自動添加了空白區域,它仍然會觸發最高級別。 所以我現在有 'var top = new Point(3,0); var top2 = new Point(3,7); // ... 如果(ctl.Bounds.Contains(頂部)|| ctl.Bounds.Contains(TOP2)){ // 做的東西 }' 萬分感謝! – 2011-03-26 21:39:49

相關問題