سؤال

ولدي winform في VS2008 التي تحتوي على داتاغريدفيف. يحتوي في DataGrid قائمة مع عدة أعمدة. يتم إصلاح هذه العرض، عشيبة واحدة بأنني شكلت لاتخاذ أي مساحة تبقى وملء عرض وجهة النظر. وwinform هو تغيير الحجم في جميع الاتجاهات.

وقضية واني اسعى الى حل هي أنني عندما زيادة حجم الرأسي للنافذة يختفي شريط التمرير والمفاجئة الأعمدة إلى اليمين لملء مساحة إضافية. ما أود أن يحدث هو أن شريط التمرير العمودي يختفي أبدا. وضع أشرطة_التمرير إلى عمودي في خصائص داتاغريدفيف لا تفعل هذا.

هل هذا ممكن على الإطلاق لتحقيق؟ وإذا كان الأمر كذلك، كيف يمكنني الحصول على شريط التمرير العمودي لتكون دائما واضحة؟

هل كانت مفيدة؟

المحلول

وحاول شاء subclasses ترث من داتاغريدفيف والتعامل مع الحدث VisibleChanged وVerticalScrollBar ل. يجب أن تكون قادرا على تعيين الخاصية مرئي إلى True هناك، تجاوز السلوك الافتراضي.

وشيء من هذا القبيل، وأعتقد أن ...

public class SubclassedDataGridView : DataGridView
    {
        public SubclassedDataGridView (): base()
        {
            VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged);
        }

        void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
        {
            VerticalScrollBar.Visible = true;
        }
     }

نصائح أخرى

في حالتي، (إعادة) فرز ساعدت الشبكة. حاول لك شيء من هذا القبيل:

 if (gridName.SortedColumn == null)
   gridName.Sort(gridNameColumns[columnName],ListSortDirection.Ascending);
 else
 {
    ListSortDirection dir;
    if (gridName.SortOrder == SortOrder.Descending) 
       dir = ListSortDirection.Descending;
    else dir = ListSortDirection.Ascending;

    gridName.Sort(gridName.SortedColumn, dir);
 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top