Ich habe ein Problem mit der Übergabe einer listView
an eine Klasse und Sortieren.ListView sortieren, indem Sie es an meine Sortierklasse übergeben - C#
Lassen Sie mich erklären, was die Idee meines Programms ist:
In Form1
erstelle ich eine listView
und ich füge hinzu Artikel mit Subitems (Name, Datum, Nummer).
Danach habe ich ein ColumnClick
Ereignis erstellt, das die Elemente nach der Spalte sortiert, auf die der Benutzer geklickt hat.
Meine Art-Algorithmus funktioniert gut, wenn es in der gleichen Form wie die listView
in erstellt wird.
Zum Zwecke meinen Code machen besser lesbar ich beschlossen, meine Art-Algorithmus in einen separaten C# Datei zu übertragen (nennen wir es SortBy.cs
). Das Ereignis ColumnClick
sollte dann den Sortieralgorithmus aufrufen.
Allerdings sagt Visual Studio mir, dass in SortBy.cs
„Der Name‚ListViewNAME‘nicht im aktuellen Kontext nicht existiert‘. Trotz der Tatsache, dass ich die Modifikatoren der listView
Eigenschaften jeweils Öffentlichkeit verändert habe.
Wie kann ich richtig dieses Problem lösen und meine SortBy Methode aufrufen
ich den Code aus meinem Projekt extrahiert Zu diesem Zweck hier es drei Artikel nur enthält
bearbeiten Code hinzugefügt:..
-Code Form1
namespace Project1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
MyList.View = View.Details;
MyList.Columns.Add("Name", 170);
MyList.Columns.Add("2.Sub", 170);
MyList.Columns.Add("3.Sub", 170);
ListViewItem Item1 = new ListViewItem("a");
Item1.SubItems.Add("11");
Item1.SubItems.Add("21");
MyList.Items.Add(Item1);
ListViewItem Item2 = new ListViewItem("b");
Item2.SubItems.Add("12");
Item2.SubItems.Add("22");
MyList.Items.Add(Item2);
ListViewItem Item3 = new ListViewItem("c");
Item3.SubItems.Add("13");
Item3.SubItems.Add("23");
MyList.Items.Add(Item3);
}
private void MyList_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (e.Column == 0)
{
//normally: code for sorting by Name
}
if (e.Column == 1)
{
//Code for sorting by Sub1
}
if (e.Column == 2)
{
//Code for sorting by Sub2
}
}
-Code SortBy:
namespace Project1
{
class SortBy
{
public void Sorting()
{
int CounterOfList = MyList.Items.Count;
//followed by sorting algorithm.
}
}
}
Damit die kurzen Beitrag habe ich abgespeckte der Code. Wie ich oben gesagt habe funktioniert meine Sortierung, wenn sie im MyList_ColumnClick
Event notiert ist.
Was ich tun wollte ist, meinen Sortiercode in eine Klasse zu setzen (ich komme aus C++; dort würde es eine Funktion genannt werden) und es aufrufen, wenn es benötigt wird.
Daher muss ich irgendwie die MyList
an SortBy
übergeben, um daran arbeiten zu können, oder für SortBy
verfügbar machen.
Modifiers
Eigenschaften von MyList
sind auf public
eingestellt. Ich habe auch internal
getestet, aber es hat nicht funktioniert.
In C++ würde ich meine Funktion anrufen und mir geht es gut. Aber ich weiß nicht, wie ich damit in C# umgehen soll.
Sie müssen etwas Code teilen. Ansonsten ist es eine Art Wunder, um die richtige Antwort zu finden :) z. Sie könnten die 'ListView' als Eingabeparameter für die Sortiermethode angeben. ... –