C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[15]: リストビューの項目を別Formに表示


(過去ログ 90 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■53858 / inTopicNo.1)  リストビューの項目を別Formに表示
  
□投稿者/ C# (10回)-(2010/09/28(Tue) 15:06:11)

分類:[C#] 

VisualStudio2005
C#で開発しています。

リストビューの選択されている項目を
別Formのテキストボックスに表示したいです。
項目は、名前、種類、内容の3つです。
今、いろいろ調べてみてこのようにコーディングしました。
selectedItem1,selectedItem2,selectedItem3は
引数として別Formのコンストラクタに渡したいと思っています。

string selectedItem1 = "";
string selectedItem2 = "";
string selectedItem3 = "";
private void ListView1_SelectedIndexChanged(object sender, EventArgs e)
{
IEnumerator myEnum = this.listView1.SelectedItems.GetEnumerator();
myEnum.MoveNext();
ListViewItem viewItem = (ListViewItem)myEnum.Current;
selectedItem1 = viewItem.SubItems[0].Text;
selectedItem2 = viewItem.SubItems[1].Text;
selectedItem3 = viewItem.SubItems[2].Text;
}

このようにコーディングしたのですが、
'System.Windows.Forms.ListView' に 'SelectedItems' の定義がありません。
とエラーが出てしまいました。
何が原因なのかわからず困っています・・・

勉強不足で申し訳ありませんが
教えていただけたら幸いです。
引用返信 編集キー/
■53860 / inTopicNo.2)  Re[1]: リストビューの項目を別Formに表示
□投稿者/ ごう (183回)-(2010/09/28(Tue) 15:26:46)
No53858 (C# さん) に返信
using System.Collections; の宣言はしてありますか?

引用返信 編集キー/
■53862 / inTopicNo.3)  Re[2]: リストビューの項目を別Formに表示
□投稿者/ C# (11回)-(2010/09/28(Tue) 15:31:10)
No53860 (ごう さん) に返信
ありがとうございます。
> using System.Collections; の宣言はしてありますか?
>
してあります。
引用返信 編集キー/
■53866 / inTopicNo.4)  Re[3]: リストビューの項目を別Formに表示
□投稿者/ ごう (184回)-(2010/09/28(Tue) 16:43:33)
No53862 (C# さん) に返信
> ■No53860 (ごう さん) に返信
> ありがとうございます。
>>using System.Collections; の宣言はしてありますか?
> >
> してあります。

当方の環境では再現しませんでした。
.NET Frameworkのバージョンは何で、どのようなプラットフォーム(端末)で動作させることを予定していますか?

参考までに(VisualStudio2005とのことなので.NET Framework2.0と仮定して)
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.selecteditems(VS.80).aspx

※もし、.NET Compact Frameworkを使用の場合は、MSDNの「バージョン情報」を見る限りではサポートされてないと思います。
引用返信 編集キー/
■53871 / inTopicNo.5)  Re[4]: リストビューの項目を別Formに表示
□投稿者/ C# (13回)-(2010/09/28(Tue) 17:43:34)
No53866 (ごう さん) に返信
ありがとうございます。

> 当方の環境では再現しませんでした。
> .NET Frameworkのバージョンは何で、どのようなプラットフォーム(端末)で動作させることを予定していますか?
>
> 参考までに(VisualStudio2005とのことなので.NET Framework2.0と仮定して)
> http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listview.selecteditems(VS.80).aspx
>
> ※もし、.NET Compact Frameworkを使用の場合は、MSDNの「バージョン情報」を見る限りではサポートされてないと思います。
.NET Compact Framework2.0を使用しています・・・
サポートされていないとは・・・
確認不足でした!ありがとうございました!


> リストビューの選択されている項目を
> 別Formのテキストボックスに表示したいです。
これを解決する方法はあるのでしょうか?
引用返信 編集キー/
■53873 / inTopicNo.6)  Re[5]: リストビューの項目を別Formに表示
□投稿者/ shu (67回)-(2010/09/28(Tue) 17:59:46)
No53871 (C# さん) に返信
SelectedIndicesというのがあります。(選択Itemのインデックスリストが入っている)

1.forループなどで idx にSelectedIndicesの要素を順次設定
2.this.listView1.Items(idx)で選択Itemが取得できます
引用返信 編集キー/
■53893 / inTopicNo.7)  Re[6]: リストビューの項目を別Formに表示
□投稿者/ C# (14回)-(2010/09/29(Wed) 15:12:18)
2010/09/29(Wed) 15:12:41 編集(投稿者)

No53873 (shu さん) に返信
ありがとうございます。
遅くなり、申し訳ありません。
> ■No53871 (C# さん) に返信
> SelectedIndicesというのがあります。(選択Itemのインデックスリストが入っている)
>
> 1.forループなどで idx にSelectedIndicesの要素を順次設定
> 2.this.listView1.Items(idx)で選択Itemが取得できます

private void ListView1_SelectedIndexChanged_UsingIndices(object sender, System.EventArgs e)
{
ListView.SelectedIndexCollection indexes = this.listView1.SelectedIndices;

int i = 0;
foreach (int index in indexes)
{
selectedItem[i] = this.listView1.Items[index].SubItems[1].Text;
i++;
}
}

このようにやってみましたがリストビューのアイテムを
もってこれてないようです・・・
コーディングの仕方が間違っているのでしょうか?
引用返信 編集キー/
■53896 / inTopicNo.8)  Re[7]: リストビューの項目を別Formに表示
□投稿者/ shu (69回)-(2010/09/29(Wed) 15:43:47)
No53893 (C# さん) に返信
> selectedItem[i] = this.listView1.Items[index].SubItems[1].Text;
ここまで実行はされていそうですか?
this.listView1.Items[index]
がListViewItemになっているか確認してみて下さい。
引用返信 編集キー/
■53897 / inTopicNo.9)  Re[8]: リストビューの項目を別Formに表示
□投稿者/ C# (15回)-(2010/09/29(Wed) 16:07:17)
No53896 (shu さん) に返信
ありがとうございます。

> ■No53893 (C# さん) に返信
>>selectedItem[i] = this.listView1.Items[index].SubItems[1].Text;
> ここまで実行はされていそうですか?
> this.listView1.Items[index]
> がListViewItemになっているか確認してみて下さい。

ブレークポイントを置いてみるとどうやら
private void ListView1_SelectedIndexChanged_UsingIndices(object sender, System.EventArgs e)
{
ここにすでに来ていないみたいです。
引用返信 編集キー/
■53900 / inTopicNo.10)  Re[9]: リストビューの項目を別Formに表示
□投稿者/ shu (70回)-(2010/09/29(Wed) 16:39:45)
No53897 (C# さん) に返信
> private void ListView1_SelectedIndexChanged_UsingIndices(object sender, System.EventArgs e)
> {
> ここにすでに来ていないみたいです。
ということはイベントを貼っていないかSelectedIndexが変わる操作をしていないかです。
引用返信 編集キー/
■53901 / inTopicNo.11)  Re[10]: リストビューの項目を別Formに表示
□投稿者/ C# (17回)-(2010/09/29(Wed) 16:56:14)
2010/09/29(Wed) 16:56:53 編集(投稿者)

No53900 (shu さん) に返信
ありがとうございます。
> ■No53897 (C# さん) に返信
>>private void ListView1_SelectedIndexChanged_UsingIndices(object sender, System.EventArgs e)
>>{
>>ここにすでに来ていないみたいです。
> ということはイベントを貼っていないかSelectedIndexが変わる操作をしていないかです。
イベントを貼るのを忘れていました・・・。
イベントを貼ったところメソッド内には
入ることが出来ました。

foreach (int index in indexes)
{
selectedItem[i] = this.listView1.Items[index].SubItems[1].Text;
i++;
"ここ"
}

"ここ"でMessageBox.Show()をして
selectedItem[i]に何が入ったか見たいのですが
MessageBox.Show(selectedItem[i]);
このように記述したら何も表示されませんでした。
また、項目が3つあるので3回foreachを回るはずが
1回で抜けてしまいました。
選択してるということをわかっていないみたいです。

ListView.SelectedIndexCollection indexes = this.listView1.SelectedIndices;
ここで選択しているものを取得しているはずなんですが・・・
なにが原因なのでしょうか・・・;
引用返信 編集キー/
■53902 / inTopicNo.12)  Re[11]: リストビューの項目を別Formに表示
□投稿者/ shu (71回)-(2010/09/29(Wed) 17:13:41)
No53901 (C# さん) に返信
> 2010/09/29(Wed) 16:56:53 編集(投稿者)
>
> ■No53900 (shu さん) に返信
> ありがとうございます。
>>■No53897 (C# さん) に返信
> >>private void ListView1_SelectedIndexChanged_UsingIndices(object sender, System.EventArgs e)
> >>{
> >>ここにすでに来ていないみたいです。
>>ということはイベントを貼っていないかSelectedIndexが変わる操作をしていないかです。
> イベントを貼るのを忘れていました・・・。
> イベントを貼ったところメソッド内には
> 入ることが出来ました。
>
> foreach (int index in indexes)
> {
> selectedItem[i] = this.listView1.Items[index].SubItems[1].Text;
> i++;
> "ここ"
> }
>
> "ここ"でMessageBox.Show()をして
> selectedItem[i]に何が入ったか見たいのですが
> MessageBox.Show(selectedItem[i]);
> このように記述したら何も表示されませんでした。
> また、項目が3つあるので3回foreachを回るはずが
> 1回で抜けてしまいました。
> 選択してるということをわかっていないみたいです。
>
> ListView.SelectedIndexCollection indexes = this.listView1.SelectedIndices;
> ここで選択しているものを取得しているはずなんですが・・・
> なにが原因なのでしょうか・・・;

条件判定は省きます。
int intdex = this.listView1.SelectedIndices[0];

ListViewItem viewItem = this.listView1.Items[index];
selectedItem1 = viewItem.SubItems[0].Text;
selectedItem2 = viewItem.SubItems[1].Text;
selectedItem3 = viewItem.SubItems[2].Text;

こんな感じでしょうか。(最初の提示コード引用)
SelectedIndicesは複数行選択に対応してコレクションになっています。
1行選択の場合、1要素のみ入っています。
引用返信 編集キー/
■53903 / inTopicNo.13)  Re[12]: リストビューの項目を別Formに表示
□投稿者/ C# (18回)-(2010/09/29(Wed) 17:40:09)
No53902 (shu さん) に返信
> 条件判定は省きます。
> int intdex = this.listView1.SelectedIndices[0];
>
> ListViewItem viewItem = this.listView1.Items[index];
> selectedItem1 = viewItem.SubItems[0].Text;
> selectedItem2 = viewItem.SubItems[1].Text;
> selectedItem3 = viewItem.SubItems[2].Text;
>
> こんな感じでしょうか。(最初の提示コード引用)
> SelectedIndicesは複数行選択に対応してコレクションになっています。
> 1行選択の場合、1要素のみ入っています。

まさにこれでした!
ありがとうございました!
解決済み
引用返信 編集キー/
■53914 / inTopicNo.14)  Re[13]: リストビューの項目を別Formに表示
□投稿者/ C# (19回)-(2010/09/30(Thu) 09:57:51)
すみません・・・一度は解決したのですが
再度、質問させてください。

リストビューに
名前|データ
a-1|a1
a-2|a2
a-3|a3
このように表示されていたとして
わかりにくくてすみません・・・
そこで質問なのですが、
リストビューのa-1を選択すると
上のコーディングでa-1,a1を取得できました。
その後a-2を選択すると

int index = this.listView1.SelectedIndices[0];

ここで実行エラーが出てしまいました。

ArgumentOutOfRangeExceptionはハンドルされませんでした。
指定された引数は、有効な値の範囲内にありません。
パラメータ名: index

というエラーです。
何が原因でしょうか?
いろいろ調べてみたのですがわからず困っています・・・
引用返信 編集キー/
■53915 / inTopicNo.15)  Re[14]: リストビューの項目を別Formに表示
□投稿者/ shu (73回)-(2010/09/30(Thu) 10:02:20)
No53914 (C# さん) に返信
> すみません・・・一度は解決したのですが
> 再度、質問させてください。
>
> リストビューに
> 名前|データ
> a-1|a1
> a-2|a2
> a-3|a3
> このように表示されていたとして
> わかりにくくてすみません・・・
> そこで質問なのですが、
> リストビューのa-1を選択すると
> 上のコーディングでa-1,a1を取得できました。
> その後a-2を選択すると
>
> int index = this.listView1.SelectedIndices[0];
>
> ここで実行エラーが出てしまいました。
>
> ArgumentOutOfRangeExceptionはハンドルされませんでした。
> 指定された引数は、有効な値の範囲内にありません。
> パラメータ名: index
>
> というエラーです。
> 何が原因でしょうか?
> いろいろ調べてみたのですがわからず困っています・・・
省略した判定処理にあります。
一度未選択の状態でイベントが発生すると思われますので、if でSelectedIndicesが空のときの
処理を追加してください。.count == 0 だと思います。

引用返信 編集キー/
■53918 / inTopicNo.16)  Re[15]: リストビューの項目を別Formに表示
□投稿者/ C# (20回)-(2010/09/30(Thu) 10:20:37)
No53915 (shu さん) に返信
> ■No53914 (C# さん) に返信
>>すみません・・・一度は解決したのですが
>>再度、質問させてください。
>>
>>リストビューに
>>名前|データ
>>a-1|a1
>>a-2|a2
>>a-3|a3
>>このように表示されていたとして
>>わかりにくくてすみません・・・
>>そこで質問なのですが、
>>リストビューのa-1を選択すると
>>上のコーディングでa-1,a1を取得できました。
>>その後a-2を選択すると
>>
>>int index = this.listView1.SelectedIndices[0];
>>
>>ここで実行エラーが出てしまいました。
>>
>>ArgumentOutOfRangeExceptionはハンドルされませんでした。
>>指定された引数は、有効な値の範囲内にありません。
>>パラメータ名: index
>>
>>というエラーです。
>>何が原因でしょうか?
>>いろいろ調べてみたのですがわからず困っています・・・
> 省略した判定処理にあります。
> 一度未選択の状態でイベントが発生すると思われますので、if でSelectedIndicesが空のときの
> 処理を追加してください。.count == 0 だと思います。
>

if (listView1.SelectedIndices.Count == 0){
return;
}
これで解決いたしました。
ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -