• 締切済み

C# ListView内の検索機能について

C#にて次のようなアプリを作成しています。 まず、MainであるForm1に、ListViewと<追加>ボタンがあります。そのボタンを押下すると入力Form(Form2)が表示されます。Form2ではListViewに追加したい項目を入力し、Form2内の<リスト追加>ボタンを押下のタイミングでForm1のListViewにその項目が追加されていきます。 MainのForm1には<検索>ボタンと検索キーワード入力テキストが用意されていて、ボタン押下のタイミングでForm1内のListViewの項目と照らし合わせ、同じ項目があれば、その項目をForm3のListViewに追加/表示させようと考えています。 この"検索"の機能が実装できません。 string keyWord = textBox1.Text; ListViewItem foundItem = listView1.FindItemWithText(keyWord, true, 0, true); if (foundItem != null) { fm3 = new Form3(); fm3.listView1.TopItem = foundItem; } fm3.Show(); 上記のように考えていますが、うまくいきません。 エラーはありません。 どうにか検索機能を実装させるために、どうか皆さんアドバイスのほど、よろしくお願いいたします。

みんなの回答

  • keibou21
  • ベストアンサー率31% (18/58)
回答No.1

どううまくいかなかったのかを結果を記述してください。 うまくいきません。だけではわかりませんので、 実行結果を載せてください

hide3_4649
質問者

お礼

ご質問ありがとうございます。旅行中でしたので回答が遅くなりましたことをお詫びいたします。 うまくいかない、というのは、Form3のクラスからForm1のListViewが見えないので、結局表示が出来なかったのですが、解決しました。 解決策としては、Form3のインスタンスを作成するときにForm1のクラスを渡しました。 おかげでForm1のListViewがForm3から見えるようになり、使用することができました。 ありがとうございました。

関連するQ&A

  • 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; }

  • ListViewについて

    いつもお世話になっています。 タイトルの通り、ListViewについて2つ質問があります。 (1)ListViewにDBから検索したデータを代入してますが、動きが遅いんです。  各項目ごとで色を変更したりするためだと思いますが、ListViewの表示を速くする方法はなにかありませんか?  ちなみに今は、ListViewを2枚使って、データをセットしている間は、VisibleをFalseにして、  データセットが完了した時点で、Trueに切り替えています。 (2)(1)の動きで、ListViewを使っているところ、今表示されているListView(Iとします)で  クリックしたデータを次に表示させるListView(IIとします)に引き継がせたいです。  Iで、選択している行をIIで選択状態にすることはできたのですが、  Iで選択している行がスクロールして下にあった場合、IIでもスクロールした場所に  ListViewを移動させたいのですが、その方法が分かりません。 何かご存知の方がいましたら、教えてください。 よろしくお願いいたします。

  • checkbox付きListViewで デフォルトチェック

    チェックボックス付きのListViewコントロールで初期値としてチェックボックスにチェック をして表示したいと思っております。 Listviewにデータを追加して(subitemもあるため)その後 ListView1.Item(i).Selected = True をしているのですが、チェックして表示されません。 項目が表示された後、何れかの項目をチェックしようとするとチェックが表示されます。 どのようにすれば最初から表示されるのでしょうか? 初歩的な質問かもしれませんが、お願い致します。

  • 初心者です。VisualStudioについて教えてください。(C++)

    初心者です。VisualStudioについて教えてください。(C++) VisualStudioのWindowsフォームプロジェクトを作成すると 「Form1」という簡易画面が自動で作成されます。 その画面にボタン等を追加していくと、そのボタン押下時の処理が 「Form1.h」にどんどん追加されていきます。 なぜヘッダファイルに処理の実装を記述していくのでしょうか? 基本的に、ヘッダとは関数やクラスを定義するだけのもので 実装はcppファイルに記述していくものだと研修等で教わったのですが。 なぜなのでしょう? ご教授下さい。 また、「Form1.h」ではなく「*.cpp」ファイルに実装を記述したい場合 どうのようにすればよいのでしょうか?

  • ライブドアブログの「Blog内検索」が機能しない

    ライブドアで数日前にブログを作りました。 さて、「Blog内検索」というプラグインを追加して、自分のブログを表示して、自分のブログ内に含まれる文字列を入力してボタンを押下しても、「見つかりません」というページが表示されてしまいます。 例えば、絶対に含まれている文字「あ」などと入れても、同様です。 何かやりかたがまずいのでしょうか。それとも、ライブドアのブログはBlog内検索が機能しないのでしょうか。

  • エクセル 検索機能をつけたい。

    エクセル2003です。初心者です。 エクセルに検索機能をつけたいんです。 Ctrlt+Fで検索自体はできるのですが、 ある部分にキーワードを入力し、検索ボタンを押したら、 そのキーワードが記載されている欄が出てくるようにしたいです。 例えば、名簿があって、鈴木太郎などで検索すると鈴木太郎さんのデータが でてくる。 女で検索したら、その名簿の女性の方々が表示される等です。 やはり難しい作業が必要になりますでしょうか? よろしくお願いいたします。

  • C++検索機能

     今、会計処理プログラムをつくっているんですけど その中の機能で、「検索」をどうつくればよいか見当がつきません。 検索する項目と検索する文字パターンについて質問し、指定項目が文字列パターンとして部分一致する会計情報のみを一覧表示するようにしたいんですけど、部分一致したかどうかを判別するにはどうしたらいいのでしょうか。  あと、Exit機能についてなんですが、ただ終了させるのではなく、入力や消去機能の実行でデータ内容の追加変更などがあった後にセーブを実行していない場合は、警告をするようにしたいのですが、どうしたらいいのでしょうか。  どなたかご教授おねがいします。

  • delphiにて(listviewでのDrag&Drop)

    タイトルの通りです。 listview(vsReport)で、Drag&Dropで 項目を上下に移動させたいのですが、 ヘルプやネットで検索しても、いまいちヒットせず、 ツリーの時のようにMoveToがないようなので、 どういうふうにしたらいいかつまっています。 単純ソートでは、思うように並んでもらえないし…。 もしくは、ListView上の右クリックのポップアップメニューで 選択した項目を「一つ上に」「一つ下に」という形でも いいのですが、試してみてもどうも思ったように 機能してくれません。 上記どちらでもいいのですが、その考え方というか、 作業手順、ヒントみたいなものでも結構なので、 どなたか教えていただけないでしょうか? また、上記内容に関するサンプル等公開しているページがあれば、 教えていただけるとありがたいです。 よろしくお願いします。

  • フレームでページ内検索機能

    2分割のフレームで名前はmenuとmainとします。 menu画面で文字列を入力させ、main画面内の文字列を検索する機能を作っています。 ボタンを1回押したときに最初に一致する文字列が反転するところまでは出来ます。 2回目以降に押したときに次に一致する文字列を反転させたい。 Netscapeでは出来ていますが、IEでの方法が分かりません。 ご教授お願いします。 'menuのソース <form onsubmit="return myFindText(this.key.value)"> <input type=text name=key> <input type=submit value="検索"> </form> function myFindText(text) { if(document.all){ // IE4 var target = parent.main.document.body.createTextRange(); if (target.findText(text)){ target.select(); target.scrollIntoView(); } } else if(document.layers){ //NN4 parent.main.window.find(text); } return false; }

  • Googleの検索で出てくる「メモをとる」はどんな機能

    検索エンジンにGoogleを使っています。 今日、始めて気がついたのですが、キーワードを入れて検索を押下すると、ヒットしたそれぞれの項目にキャッシュ、関連ページ、メモをとるが、現れています。 その内の「メモをとる」をクリックしましたら、「メモを保存しました」に変わりましたので、ためしにWORDを開けて貼り付けを押してみましたが、何の変化もありません。 デスクトップにでも自動的に保存されたかと調べてみましたが、荘でもない様子です。 ご存知の方、お教え下さい。

専門家に質問してみよう