أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية فرز عنصر تحكم ListView حسب عمود في Visual Basic .NET أو في Visual Basic 2005

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

اضغط هنا لرابط المقالة باللغة الانجليزية319399
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 319401.
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 170884.
الموجز
توضح هذه المقالة خطوة بخطوة حول كيفية فرز عنصر تحكم ListView حسب عمود في Visual Basic .NET أو تطبيق Visual Basic 2005.

عند العمل مع عنصر تحكم ListView قد تحتاج لفرز استناداً إلى عمود معين محتوياته. مثال عن هذا النوع من الوظائف التي تحدث في مستكشف Windows البرنامج عند عرض محتويات أحد المجلدات على القرص الثابت. في عرض تفاصيل, يعرض مستكشف Windows معلومات حول الملفات في هذا المجلد. على سبيل المثال، راجع اسم الملف و حجم الملف نوع الملف و تاريخ الملف تم تعديله. عند النقر فوق أحد رؤوس الأعمدة يتم فرز القائمة استناداً إلى ذلك العمود بترتيب تصاعدي. عند النقر فوق رأس العمود نفس يتم فرز العمود بترتيب تنازلي.

يحدد المثال في هذه المقالة فئة واجهة IComparer. بالإضافة إلى ذلك، يستخدم هذا المثال أسلوب مقارنة الفئة CaseInsenstiveComparer لتنفيذ الفعلي المقارنة بين العناصر. لاحظ أن هذه الطريقة المقارنة غير حساس لحالة الأحرف (تعتبر "التفاح" نفسه "التفاح"). لاحظ أيضًا أن يتم فرز كافة الأعمدة في هذا المثال بطريقة "نص". إذا أردت فرز بطريقة مختلفة (مثل قائمة على الأرقام) ، يمكنك استبدال سطر التعليمات البرمجية التالي بغض النظر عن الأسلوب إلى الفرز الذي تريد استخدامه:
compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)				
back to the top

كيفية إنشاء المشروع نموذج

  1. إنشاء مشروع جديد تطبيق Windows 2005 Visual Basic أو Visual Basic .NET. يتم إنشاء Form1 بشكل افتراضي.

    ملاحظة يجب تغيير تعليمة برمجية في Visual Basic 2005. بشكل افتراضي، يُنشئ Visual Basic ملفين المشروع عند قيامك بإنشاء مشروع نماذج Windows. إذا تم تسمية النموذج Form1 ، تتم تسمية الملفين التي تمثل النموذج Form1.vb و Form1.Designer.vb. كتابة التعليمة البرمجية في ملف Form1.vb. مصمم نماذج Windows بكتابة التعليمة البرمجية في ملف Form1.Designer.vb. مصمم نماذج Windows يستخدم الكلمة الأساسية الجزئية لتقسيم تطبيق Form1 إلى ملفين منفصلة. يمنع هذا السلوك التعليمة البرمجية التي تم إنشاؤها مصمم يتم interspersed مع التعليمات البرمجية الخاصة بك.

    لمزيد من المعلومات حول تحسينات اللغة 2005 Visual Basic الجديدة قم بزيارة موقع شبكة مطوري Microsoft (MSDN) التالي على الويب: لمزيد من المعلومات حول فئات جزئية "و" مصمم نماذج Windows قم بزيارة موقع MSDN التالي:
  2. إضافة عنصر تحكم ListView Form1. تغيير حجم النموذج أن بوصة عدة واسع × بوصة عدة طويل.
  3. قم بلصق التعليمة البرمجية التالية إلى الفئة الخاصة بالنموذج:
    Private lvwColumnSorter As ListViewColumnSorter					
  4. قم بلصق التعليمة البرمجية التالية داخل مُنشئ النموذج بعد استدعاء الأسلوب InitializeComponent:
    ' Create an instance of a ListView column sorter and assign it ' to the ListView control.lvwColumnSorter = New ListViewColumnSorter()Me.ListView1.ListViewItemSorter = lvwColumnSorter					
  5. قم بلصق التعليمة البرمجية التالية إلى الحدث Load النموذج:
    Dim columnheader As ColumnHeader    ' Used for creating column headers.Dim listviewitem As ListViewItem    ' Used for creating ListView items.' Make sure that the view is set to show details.ListView1.View = View.Details' Create some ListView items consisting of first and last names.listviewitem = New ListViewItem("Mike")listviewitem.SubItems.Add("Nash")Me.ListView1.Items.Add(listviewitem)listviewitem = New ListViewItem("Kim")listviewitem.SubItems.Add("Abercrombie")Me.ListView1.Items.Add(listviewitem)listviewitem = New ListViewItem("Sunil")listviewitem.SubItems.Add("Koduri")Me.ListView1.Items.Add(listviewitem)listviewitem = New ListViewItem("Birgit")listviewitem.SubItems.Add("Seidl")Me.ListView1.Items.Add(listviewitem)' Create some column headers for the data.columnheader = New ColumnHeader()columnheader.Text = "First Name"Me.ListView1.Columns.Add(columnheader)columnheader = New ColumnHeader()columnheader.Text = "Last Name"Me.ListView1.Columns.Add(columnheader)' Loop through and size each column header to fit the column header text.For Each columnheader In Me.ListView1.Columns    columnheader.Width = -2Next					
  6. قم بلصق التعليمة البرمجية التالية إلى الحدث ColumnClick لـ ListView:
    ' Determine if the clicked column is already the column that is ' being sorted.If (e.Column = lvwColumnSorter.SortColumn) Then    ' Reverse the current sort direction for this column.    If (lvwColumnSorter.Order = SortOrder.Ascending) Then        lvwColumnSorter.Order = SortOrder.Descending    Else        lvwColumnSorter.Order = SortOrder.Ascending    End IfElse    ' Set the column number that is to be sorted; default to ascending.    lvwColumnSorter.SortColumn = e.Column    lvwColumnSorter.Order = SortOrder.AscendingEnd If' Perform the sort with these new sort options.Me.ListView1.Sort()					
  7. من القائمة المشروع انقر فوق إضافة فئة لإضافة فئة جديدة إلى المشروع.
  8. استبدال كافة التعليمات البرمجية الافتراضية في فئة جديدة مع التعليمات البرمجية التالية:
    Imports System.CollectionsImports System.Windows.FormsPublic Class ListViewColumnSorter    Implements System.Collections.IComparer    Private ColumnToSort As Integer    Private OrderOfSort As SortOrder    Private ObjectCompare As CaseInsensitiveComparer    Public Sub New()        ' Initialize the column to '0'.        ColumnToSort = 0        ' Initialize the sort order to 'none'.        OrderOfSort = SortOrder.None        ' Initialize the CaseInsensitiveComparer object.        ObjectCompare = New CaseInsensitiveComparer()    End Sub    Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare        Dim compareResult As Integer        Dim listviewX As ListViewItem        Dim listviewY As ListViewItem        ' Cast the objects to be compared to ListViewItem objects.        listviewX = CType(x, ListViewItem)        listviewY = CType(y, ListViewItem)        ' Compare the two items.        compareResult = ObjectCompare.Compare(listviewX.SubItems(ColumnToSort).Text, listviewY.SubItems(ColumnToSort).Text)        ' Calculate the correct return value based on the object         ' comparison.        If (OrderOfSort = SortOrder.Ascending) Then            ' Ascending sort is selected, return typical result of             ' compare operation.            Return compareResult        ElseIf (OrderOfSort = SortOrder.Descending) Then            ' Descending sort is selected, return negative result of             ' compare operation.            Return (-compareResult)        Else            ' Return '0' to indicate that they are equal.            Return 0        End If    End Function    Public Property SortColumn() As Integer        Set(ByVal Value As Integer)            ColumnToSort = Value        End Set        Get            Return ColumnToSort        End Get    End Property    Public Property Order() As SortOrder        Set(ByVal Value As SortOrder)            OrderOfSort = Value        End Set        Get            Return OrderOfSort        End Get    End PropertyEnd Class					
  9. حفظ بناء ثم قم بتشغيل المشروع العينة.
  10. انقر فوق رؤوس الأعمدة المتعددة في عنصر تحكم ListView. عند النقر فوق الرأس محتويات عنصر تحكم ListView يتم فرز في ترتيب تنازلي استناداً إلى العمود الذي قمت بالنقر فوق. عند النقر فوق رأس العمود نفس يتم فرز هذا العمود في ترتيب تنازلي.
back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 319399 - آخر مراجعة: 05/11/2007 07:08:50 - المراجعة: 3.5

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB319399 KbMtar
تعليقات
>ype="text/JavaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >ody> ng-click="setLanguage(language);" class="ng-binding" id="language-es-py">Paraguay - Español
Venezuela - Español
id=1&t=">crosoft.com/c.gif?DI=4050&did=1&t=">html>>