listView
をクラスに渡してソートする際に問題があります。私はlistView
を作成し、私はサブ項目(名前、日付、番号)を持つアイテムを追加Form1
で並べ替えリストをSortクラスに渡して並べ替え - C#
:
は私が私のプログラムのアイデアが何であるかを説明しましょう。
その後、ユーザーがクリックした列でアイテムを並べ替えるColumnClick
イベントを作成しました。 listView
がで作成されたとして、それは同じ形をしているとき
私のソートアルゴリズムが正常に動作します。
私のコードを作るために、私は別のC#ファイルに私のソートアルゴリズムを譲渡することを決定し、より良い読めます(SortBy.cs
と呼ぶことができます)。 ColumnClick
イベントは、ソートアルゴリズムを呼び出す必要があります。
しかし、VisualStudioをはSortBy.cs
に「名 『ListViewNAMEは、』私は、それぞれ公衆にlistView
プロパティ修飾子を変更したという事実にもかかわらず。現在のコンテキスト」に存在しないと言われます。
どうすればよいですこの問題を解決し、適切に私のSORTBYメソッドを呼び出す
を、私は私のプロジェクトからコードを抽出し、この目的のために、ここでそれだけで3つの項目が含まれてい
編集コードを追加しました:?。。
コードを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
}
}
コードSORTBYは:
namespace Project1
{
class SortBy
{
public void Sorting()
{
int CounterOfList = MyList.Items.Count;
//followed by sorting algorithm.
}
}
}
削ぎ落とした後の短いIコードを維持するために。上記のように、私のソートはMyList_ColumnClick
イベントで書かれていれば動作します。
私のやりたいことは、ソートコードをクラスに入れておくことです(私はC++から来ています;それは関数と呼ばれるでしょう)。
したがって、私は何らかの形でをSortBy
に渡す必要があります。それには、SortBy
で利用できるようにする必要があります。
Modifiers
MyList
のプロパティはpublic
に設定されています。私もinternal
をテストしましたが、うまくいきませんでした。
C++では関数を呼び出しても問題ありません。しかし、私はC#でこれをどのように処理するのか分かりません。
いくつかのコードを共有する必要があります。そうでなければ、正解を見つけるのは一種の奇跡です。ソートメソッドの入力パラメータとして 'ListView'を与えることができます。 ... –