• 締切済み

Listviewの内容を数字の降順に並べ替えたい

こんばんは、いつもお世話になっております。 ListViewにアイテムを追加し、降順に並べ変えたいのですが、 方法がよくわからず、手間取っております。 ListViewの形式が アイテム名、数字1、数字2、数字3、数字4、数字5、数字1~5の合計、判定 となっていて、数字1~5の合計を基準に降順にしたいのです。 たとえばアイテムが アイテムA、2、2、2、1、5、12、判定:B アイテムB、4、4、5、5、5、23、判定:A アイテムC、1、1、2、2、4、10、判定:C アイテムD、3、3、4、5、6、21、判定:A となっていたとき、 アイテムB、4、4、5、5、5、23、判定:A アイテムD、3、3、4、5、6、21、判定:A アイテムA、2、2、2、1、5、12、判定:B アイテムC、1、1、2、2、4、10、判定:C となるように…。 並べ替えのタイミングはカラムヘッダをクリックした時でなく、 ListViewにアイテムを全部追加し終えてからにしようと考えています。 使用ソフトはVB2008です。 方法をご存知の方、ご教授をお願いします。

みんなの回答

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 Listview ソートで、グーグルで検索すると 沢山ヒットしますが。 それでは、何か不都合でもあるのですか。???

samalf
質問者

お礼

こんにちは。 どうやら検索する語句が多すぎたみたいで、詳しく解説されてるサイトが 出てきてませんでした。 http://smdn.invisiblefulmoon.net/ikimasshoy/vbdotnet/comparison.html こちらを参照させていただいたら上手く動きました。

関連するQ&A

  • エクセルで数字を抽出後、降順に並べ替えたい

    49通 52通 52通 48通 43通 36通 50通 のように並んでるデータがあります。 それを、『通』を除外して数字を抽出して、降順に並べ替えたいです。 違うセルに出てくる形でもOKなので教えていただけたらとても助かります。 今までは、区切り位置で『通』を消してそれから並べ替えをつかっていたのですが、ちょっと手間がかかるので、もっと速い方法があればと思って質問しました、よろしくお願い致します。

  • エクセル【昇順・降順で並べ替え】について

    エクセル【昇順・降順で並べ替え】について 下記のようにエクセル表に入力したものを23日→4日に並べ替えをしたいのです。 昇順をしてみたら、番号が狂ってしまいます。 日付け順に狂いなく並べ替えができる方法を教えてください。 どうぞ宜しくお願いします。 日付け 番号 ランク 1月4日 101 A 1月5日 102 C 1月9日 103 B 1月9日 104 A 1月19日 105 C 1月23日 106 A 1月23日 107 C 1月23日 108 C

  • ListViewとArrayListの連動がうまくいきません

    メールソフトの中で既読、未読を設定するフラグを実装しているのですが ListViewのカラムクリック時の昇順・降順設定を追加するとなぜか おかしな表示になってしまいます。 未読(フラグがtrue)の時は太字で表示されて、既読(フラグがfalse)の 場合は通常のフォントで表示するようにしてあるのですが、 指定している配列ですべてtrueにしているのにもかかわらず表示されるのは trueとfalseの結果の表示がまばらに出てしまって何が原因なのかが 分かりません。 どうすればこれを解決する事が出来るでしょうか? 環境はVS2005(C#)、.NET Framework 2.0です。 リストビューの昇順・降順ロジックはどぼんの.NET Tipsに 載っている文字列、数字、日付で比較が可能なタイプのを 使用しています。 public void UpdateListView() { ArrayList list = null; int i = 0; if (listView1.Columns[1].Text == "差出人") { // 受信メールの場合 list = collectionMail[RECEIVE]; } else if (listView1.Columns[1].Text == "差出人または宛先") { // 削除メールの場合 list = collectionMail[DELETE]; } listView1.BeginUpdate(); // リストビューの内容をクリアする listView1.Items.Clear(); // ListViewを設定する foreach (Mail mail in list) { ListViewItem item = new ListViewItem(mail.subject); item.SubItems.Add(mail.address); item.SubItems.Add(mail.date); // この2行を追加 item.Tag = i; i++; listView1.Items.Add(item); // 未読(未送信)の場合は、フォントを太字にする int index = listView1.Items.Count - 1; if (mail.notReadYet == true) { listView1.Items[index].Font = new Font(this.Font, FontStyle.Bold); } } listView1.EndUpdate(); } private void listView1_DoubleClick(object sender, EventArgs e) { Mail mail = null; ListViewItem item = listView1.SelectedItems[0]; if (listView1.Columns[1].Text == "差出人") { mail = (Mail)collectionMail[RECEIVE][(int)item.Tag]; } else if (listView1.Columns[1].Text == "差出人または宛先") { mail = (Mail)collectionMail[DELETE][(int)item.Tag]; } mail.notReadYet = false; textBox1.Text = mail.body; UpdateListView(); } private void Form1_Load(object sender, EventArgs e) { // ListViewにアイテムを追加する for (int no = 0; no < subject.Length; no++) { Mail mail = new Mail(subject[no], address[no], date[no], body[no], read[no]); collectionMail[RECEIVE].Add(mail); } UpdateTreeView(); UpdateListView(); // ListViewItemComparerの作成と設定 listViewItemSorter = new ListViewItemComparer(); listViewItemSorter.ColumnModes = new ListViewItemComparer.ComparerMode[] { ListViewItemComparer.ComparerMode.String, ListViewItemComparer.ComparerMode.String, ListViewItemComparer.ComparerMode.DateTime }; // ListViewItemSorterを指定する listView1.ListViewItemSorter = listViewItemSorter; }

  • C# ListView 自作列幅調整 描画されない

    いつもお世話になっております。 今回はC#のListViewで皆様にお聞きしたいことがあり、 質問させて頂きました。 ListViewに3列追加しListViewの幅が変更された際に 2列目のみを引き延ばすものを作りたいと思っています。 しかし、以下操作を行うと、ListViewのリサイズ等で 描画更新されない状態になってしまいます。 (また、リストアイテムをクリックするとその列は描画されるのですが、 アイテムの描画開始Y位置がおかしくなっています。)  1.縦スクロールバーが表示されるまで縮小する  2.スクロールバーのノブを下に移動  3.縦スクロールバーの表示が消えるまで拡大する サンプルコード及び画像を添付いたします。 内容は、  3列のListViewに適当なアイテムを10個追加し、  OnClientSizeChangedでClientSize.Widthと1列3列の幅から  2列目の幅を算出・設定しています。 ※画像は、以下コントロールをFormに張り付けただけのもので  問題の起こる操作をした際のものになります。 class MyListView : ListView {   public const int COL_1_WIDTH  = 30;   public const int COL_3_WIDTH  = 75;   enum LISTVIEW_COL   {     COL1,     COL2,     COL3,     NUM   }   public MyListView() {     Dock = DockStyle.Fill;     HeaderStyle = ColumnHeaderStyle.None;     FullRowSelect = true;     HideSelection = false;     View = System.Windows.Forms.View.Details;     //ヘッダ追加     ColumnHeader column1 = new ColumnHeader();     ColumnHeader column2 = new ColumnHeader();     ColumnHeader column3 = new ColumnHeader();     ColumnHeader[] columnHeaders = { column1, column2, column3 };     this.Columns.AddRange( columnHeaders );     //ヘッダ幅追加     this.Columns[( int )LISTVIEW_COL.COL1].Width = COL_1_WIDTH;  //1列固定     this.Columns[( int )LISTVIEW_COL.COL3].Width = COL_3_WIDTH; //3列固定     int width = ClientRectangle.Width;     for( int i = 0; i < Columns.Count; i++ ) {       if( i == ( int )LISTVIEW_COL.COL2 ) { continue; }       width -= Columns[i].Width;     }     //2列 リストビューの幅いっぱいになるように調節     this.Columns[( int )LISTVIEW_COL.COL2].Width = width;     //適当にアイテム追加     for( int i = 0; i < 10; i++ ) {       string[] strs = { "COL1", "COL2", "COL3" };       ListViewItem item = new ListViewItem( strs );       this.Items.Add( item );     }   }   protected override void OnClientSizeChanged( EventArgs e ) {     base.OnClientSizeChanged( e );     //2列の幅を調整     int width = ClientRectangle.Width;     for( int i = 0; i < Columns.Count; i++ ) {       if( i == ( int )LISTVIEW_COL.COL2 ) { continue; }       width -= Columns[i].Width;     }     Columns[( int )LISTVIEW_COL.COL2].Width = width;   } } 何故このようになってしまうのかご存知の方いらっしゃいましたら教えてください。

  • C# listviewで指定した配列にあるデータで、TEXTBOXへ表

    C# listviewで指定した配列にあるデータで、TEXTBOXへ表示ついて 例 listviewに 1 2 3 4 5 6 7 8 A Aさん 50 B Bさん 40 C Cさん 60 D こういう感じで B行にある3列に40のデータを TEXTBOXへ表示したいのですが、どなたかご存知いましたらプログラムソース教えて戴けませんか? お願いいたします。

  • ストアアプリ開発 C# ListViewについて

    ストアアプリ開発 C#初心者です。 サーバーからデータ取得後、 ListViewにデータを追加したいのですがよくわかりません。 ListViewに表示させたいのは日付、タイトル、画像です。 xaml↓ <ListView Grid.Row="1" x:Name="ListView1"></ListView> C# foreach (var item in blog_list){ ListViewItem addItem = new ListViewItem(); addItem.Tag = item.GetObject().GetNamedString("id"); addItem.Content = item.GetObject().GetNamedString("name"); ListView1.Items.Add(addItem); } 本当に初心者で申し訳ないのですがわかりやすい 解説等してるサイトありましたら教えてください。

  • テキスト入力の数字とダイナミックテキストの数字の足し算

    Flash8 で集計表を作っています。 a1(ボタン)  a2(静止テキストと変数)  a3(ダイナミックテキストと変数)、 b1(ボタン)  b2(静止テキストと変数)  b3(ダイナミックテキストと変数)、 c1(ボタン)  c2(テキストと変数)     c3(ダイナミックテキストと変数)、 d1(ボタン)  d2 (ダイナミックテキストと変数) d3(ダイナミックテキストと変数)、 を設定後、例えば a1/b1 をクリックして、a2/b2 の数字を a3/b3 に表示、ただし c2 のみは「任意の数字を記入後」c1 をクリックして c3 に表示させています。 d2 d3 は「ans」を利用して合計を表示します。 this.c_btn1.onRelease = function () { c3 = (c2); } とスクリプトを書いて処理していますが、「c3」に代入されるデータが「数字」ではなく「文字列」になるようで、d1 をクリック後に「d3」に合計が表示されません。 「c2」「c3」の関係で、「数字」を確実に「c3」へ渡す方法を教えて下さい。

  • 昇順降順の並べ替えのショートカットキーは変わってし

    アクセス2003と2007ではデータシートの昇順降順の並べ替えのショートカットキーは変わってしまったのでしょうか? 確か2003のときは 昇順→右クリック+A 降順→右クリック+D だったはずですが 2007は 昇順→右クリック+S 降順→右クリック+O になっています。 私だけでしょうか?バグでしょうか? それともそういう仕様なのですか?

  • Excelの昇順/降順で並び替えにつきまして・・・

    初歩的かもしれませんがよろしくお願いいたします。 例えば、この様な表があるとしまして・・    A     B       C     D 1  氏名 |  住所   |  品名 | 品番 2  佐藤 | ◎◎丁目 | りんご |  02 3  田中 | □□丁目 | バナナ |  04 4  鈴木 | △△丁目 | ミカン |  03 5  伊藤 | ◇◇丁目 | スイカ |  01 Dの品番を昇順/降順で並べ替えた場合にA、B、Cのデータも Dの順番と一緒に変わる方法を教えてください。 よろしくお願いいたします。

  • VB2010 LISTVIEW 計算

    VB2010でLISTVIEWを使っています。 LISTVIEWの数字とLISTVIEW外のLABEL4の数字と合計してsuzuに格納したいのです。 Dim suzu As Long suzu = clng(Me.ListView1.Items(2).SubItems(3).Text) - clng(Me.ListView1.Items(3).SubItems(3).Text) + CLng(Me.Label4.Text) Me.ListView1.Items(4).SubItems(3).Text = CStr(Format(suzu, "#,0")) 実行させるとエラーとなります。エラーメッセージは次のようです。 「String "Label4" から型 'Long' への変換は無効です。」 トラブルシューティングのヒントを見ても対応方法が分かりません。 ご存知の方は、ご指導をお願いします。

専門家に質問してみよう