2012-04-01 19 views
30

के नीचे स्क्रॉल करें मैं एक सी # WinForm में DataGridView के नीचे स्क्रॉल करने का प्रयास कर रहा हूं।सी # डेटाग्रिड व्यू

इस कोड को किसी पाठ बॉक्स के साथ काम करता है:

textbox_txt.SelectionStart = textbox_txt.Text.Length; 
textbox_txt.ScrollToCaret(); 

... लेकिन मैं कैसे एक DataGridView के साथ यह करने के लिए पता नहीं है। कोई मदद, कृपया?

+0

के संभावित डुप्लिकेट [DataGridView: नीचे स्क्रॉल स्वचालित रूप से केवल स्क्रॉल तल पर है अगर] (http://stackoverflow.com/questions/16263377/datagridview-scroll- नीचे-स्वचालित-केवल-अगर-स्क्रॉल-ऑन-द-डाउन) –

उत्तर

61

DataGridView के नीचे स्क्रॉल करने के लिए इसे आजमाएं।

dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.RowCount-1; 
+2

उपयोगी, धन्यवाद। यदि आपके डेटाग्रिड व्यू में पंक्तियां छिपी हैं तो आपको पंक्ति दृश्यता की जांच करनी होगी क्योंकि DataGridView आपको अदृश्य पंक्तियों तक स्क्रॉल नहीं करने देता है। –

+1

अच्छा है! यदि आपका डेटाग्रिड व्यू बाध्यकारी स्रोत से जुड़ा हुआ है, तो आप डेटा ग्रिड व्यू 1 के साथ एक ही परिणाम प्राप्त कर सकते हैं। फर्स्ट डिस्प्लेस्ड स्क्रॉलिंगरोविंडेक्स = बाइंडिंगसोर्स.काउंट -1; – WhySoSerious

+1

यदि वर्तमान में कोई चयनित सेल है तो यह काम नहीं करता है क्योंकि DataGridView उस सेल को दृश्यमान रखने की कोशिश करता है। क्या स्क्रॉल को मजबूर करने का कोई तरीका है? मैं वर्तमान सेल को बदलना नहीं चाहता, बस इसे स्क्रीन से स्क्रॉल करें। – dwilliss

3

एक वाणिज्यिक प्रोग्रामर के रूप में, मैं एक सी # DLL का उपयोग अपने सभी DataGridView परियोजनाओं जो मुझे जो कुछ भी परियोजना मैं शुरू के लिए भाषा का स्वतंत्रता देता है संभालने के लिए। मेरे सभी कार्यक्रम सभी कुंजी-प्रेसों को जाल करते हैं ताकि मैं उन्हें अपने उद्देश्यों के लिए उपयोग कर सकूं। DataGridView स्क्रॉलिंग के लिए, मैं एक पृष्ठ के लिए पेजअप/पेजडाउन कुंजी का उपयोग करता हूं, सिंगल लाइन के लिए Ctrl/पेज और शीर्ष (ऊपर) और नीचे (नीचे) के लिए Alt/पृष्ठ का उपयोग करता हूं। सी # कोड और बेसिक फोन करने अनुक्रम इस प्रकार है:

//---------- C# Dll Partial Source ----------- 

public int RowShow 
    { get { return vu.DisplayedRowCount(false); } } 

public int RowCount 
    { get { return vu.RowCount; } } 

public void PageMove(int rows) 
{ 
    int rowlimit = vu.RowCount - 1; 
    int calc = vu.FirstDisplayedScrollingRowIndex + rows; 

    if (calc > rowlimit) calc = rowlimit; // Go to bottom 
    if (calc < 0)  calc = 0;   // Go to top 

    vu.FirstDisplayedScrollingRowIndex = calc; 
} 

// ---------- End Data Grid View ---------- 



//---------- Calling Program C# ---------- 

public void Page_Key(int val, int lastKey) 
{ 
    int inc = 1;    // vu is DataGridView 

    If (val == 33) inc = -1; 

    int rowsDisp = vu.RowShow; // # of rows displayed 
    int rowsMax = vu.RowCount; // # of rows in view 
    int rows  = 0; 

    switch (lastKey) 
    {   
     case 17:     // Ctrl prior to Page 
     rows = inc; 
     break; 
     case 19:     // Alt prior to Page 
     rows = rowsMax * inc; 
     break; 
     default: 
     rows = rowsDisp * inc 
     break; 
    } // end switch 

    vu.PageMove(rows) 
} // end Page_Key 



'----- Calling Program B4PPC, VB ----- 

Sub Page_Key(val,lastKey)  ' 33=PageUp, 34=Down 
    inc = 1     ' vu is DataGridView 

    If val = 33 then inc = -1 

    rowsDisp = vu.RowShow  ' # of rows displayed 
    rowsMax = vu.RowCount ' # of rows in view 
    rows  = 0 

    Select lastKey 
     Case 17     ' Ctrl prior to Page 
     rows = inc 
     Case 19     ' Alt prior to Page 
     rows = rowsMax * inc 
     Case Else 
     rows = rowsDisp * inc 
    End Select 

    lastKey = "" 

    vu.PageMove(rows) 
End Sub 
संबंधित मुद्दे