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

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

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

Re[17]: ボタンでlistviewアイテムの取得


(過去ログ 14 を表示中)

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

■4241 / inTopicNo.1)  ボタンでlistviewアイテムの取得
  
□投稿者/ 美流久 (5回)-(2007/06/11(Mon) 14:25:57)

分類:[.NET 全般] 

こんにちは
VB2005で記述しています。

picturebox1〜4つ、listview1、button1を配置しております。

以前no4134で投稿しましたが、listviewでアイテム1つ選ぶと選んだアイテム含め計4つのアイテムがとれpicturebox1〜4にサンプルコードで反映させました。

そのあと、listviewアイテム(例えばアイテム0〜4をpictureboxに格納し、picturebox4(アイテム4)に格納した次のアイテム(アイテム5〜8))をボタンで取得したいのですが、4+1みたいな感じにしていましたが、それがアイテム12の場合でも、13〜16のアイテム取得といったように「次へ」のボタンで順々に4つのアイテムを取っていきたいのです。
いくらやっても5〜8までのアイテムしか取得できません。

アドバイス宜しくお願いいたします。

引用返信 編集キー/
■4242 / inTopicNo.2)  Re[1]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (20回)-(2007/06/11(Mon) 14:50:31)
とりこびと さんの Web サイト
2007/06/11(Mon) 14:50:59 編集(投稿者)

こんにちは。

No4241 (美流久 さん) に返信
>
> そのあと、listviewアイテム(例えばアイテム0〜4をpictureboxに格納し、picturebox4(アイテム4)に格納した次のアイテム(アイテム5〜8))をボタンで取得したいのですが、4+1みたいな感じにしていましたが、それがアイテム12の場合でも、13〜16のアイテム取得といったように「次へ」のボタンで順々に4つのアイテムを取っていきたいのです。
> いくらやっても5〜8までのアイテムしか取得できません。

# どうみても アイテム0〜4はアイテム数が5つある気がしますが・・・

たとえば、表示する最初のアイテムの index をフィールドかどっかに保持しておいて
一回ボタンを押すたびに+4する、というのはどうでしょうか?

1回目が 0,1,2,3 なら index 0 を保持、
2回目は index 0 +4 で 4 から 4つ (4,5,6,7)。で、 index 4 を保持、
3回目は index 4 +4 で 8 から 4つ (8,9,10,11) ・・・って感じでしょうか。
引用返信 編集キー/
■4243 / inTopicNo.3)  Re[2]: ボタンでlistviewアイテムの取得
□投稿者/ まどか (304回)-(2007/06/11(Mon) 14:59:45)
ちなみに
常に直前の格納アクションに対する「次」であれば、

> たとえば、表示する最初のアイテムの index をフィールドかどっかに保持しておいて

最小インデックス+4 または 最大インデックス+1が「次」となりますね。

引用返信 編集キー/
■4250 / inTopicNo.4)  Re[3]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (6回)-(2007/06/11(Mon) 17:12:35)
とりこびとさん
まどかさん
ありがとうございます。

>1回目が 0,1,2,3 なら index 0 を保持、
2回目は index 0 +4 で 4 から 4つ (4,5,6,7)。で、 index 4 を保持、
3回目は index 4 +4 で 8 から 4つ (8,9,10,11) ・・・って感じでしょうか。

ほぼ上記のような方法でpicturebox4にあるアイテム以降を取得出来ました。
2回クリック、3回クリックするにはループになるんでしょうか?
宜しくお願い致します☆
引用返信 編集キー/
■4251 / inTopicNo.5)  Re[4]: ボタンでlistviewアイテムの取得
□投稿者/ まどか (305回)-(2007/06/11(Mon) 17:32:47)
> 2回クリック、3回クリックするにはループになるんでしょうか?

これがどのような操作なのか想像がつかないのですが。。。
引用返信 編集キー/
■4252 / inTopicNo.6)  Re[5]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (7回)-(2007/06/11(Mon) 17:47:24)
No4251 (まどか さん) に返信
>>2回クリック、3回クリックするにはループになるんでしょうか?
>
> これがどのような操作なのか想像がつかないのですが。。。

すみませんorz
一回押せば4枚、もう一回押せばまた4枚と取得したいのです。
引用返信 編集キー/
■4254 / inTopicNo.7)  Re[6]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (21回)-(2007/06/11(Mon) 18:51:24)
とりこびと さんの Web サイト
No4252 (美流久 さん) に返信

> 一回押せば4枚、もう一回押せばまた4枚と取得したいのです。

最初からそれに対する回答のつもりだったんですが・・・
4枚表示するもののうち、最初の1枚のIndex を保持しておけば・・・と。

以下のコードでイメージできますか?

Form1 に Button1 を置いて以下のコードで試してみてください。

Public Class Form1

    Private index As Integer = 0

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        MessageBox.Show(index.ToString)

        index += 4

    End Sub

End Class

引用返信 編集キー/
■4264 / inTopicNo.8)  Re[7]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (8回)-(2007/06/12(Tue) 10:37:10)
No4254 (とりこびと さん) に返信
> ■No4252 (美流久 さん) に返信
> 
>>一回押せば4枚、もう一回押せばまた4枚と取得したいのです。
> 
> 最初からそれに対する回答のつもりだったんですが・・・
> 4枚表示するもののうち、最初の1枚のIndex を保持しておけば・・・と。
> 
> 以下のコードでイメージできますか?
> 
> Form1 に Button1 を置いて以下のコードで試してみてください。
> 
> Public Class Form1
> 
>     Private index As Integer = 0
> 
>     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> 
>         MessageBox.Show(index.ToString)
> 
>         index += 4
> 
>     End Sub
> 
> End Class

とりこびとさんこんにちは
わざわざサンプルソースありがとうございます。
保持しておく・・・そういうことだったんですね。
私は違う風にしていました。。
上のソースを参考にし、
n=0
n+index,n+1+index,n+2+indexとしてみたところやりたいことができました。
ありがとうございます。

引用返信 編集キー/
■4265 / inTopicNo.9)  Re[8]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (9回)-(2007/06/12(Tue) 10:37:18)
No4264 (美流久 さん) に返信
> ■No4254 (とりこびと さん) に返信
>>■No4252 (美流久 さん) に返信
>>
> >>一回押せば4枚、もう一回押せばまた4枚と取得したいのです。
>>
>>最初からそれに対する回答のつもりだったんですが・・・
>>4枚表示するもののうち、最初の1枚のIndex を保持しておけば・・・と。
>>
>>以下のコードでイメージできますか?
>>
>>Form1 に Button1 を置いて以下のコードで試してみてください。
>>
>>Public Class Form1
>>
>> Private index As Integer = 0
>>
>> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
>>
>> MessageBox.Show(index.ToString)
>>
>> index += 4
>>
>> End Sub
>>
>>End Class
>
> とりこびとさんこんにちは
> わざわざサンプルソースありがとうございます。
> 保持しておく・・・そういうことだったんですね。
> 私は違う風にしていました。。
> 上のソースを参考にし、
> n=0
> n+index,n+1+index,n+2+indexとしてみたところやりたいことができました。
> ありがとうございます。
解決済み
引用返信 編集キー/
■4285 / inTopicNo.10)  Re[9]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (10回)-(2007/06/12(Tue) 16:17:12)
No4265 (美流久 さん) に返信
> ■No4264 (美流久 さん) に返信
>>■No4254 (とりこびと さん) に返信
> >>■No4252 (美流久 さん) に返信
> >>
>>>>一回押せば4枚、もう一回押せばまた4枚と取得したいのです。
> >>
> >>最初からそれに対する回答のつもりだったんですが・・・
> >>4枚表示するもののうち、最初の1枚のIndex を保持しておけば・・・と。
> >>
> >>以下のコードでイメージできますか?
> >>
> >>Form1 に Button1 を置いて以下のコードで試してみてください。
> >>
> >>Public Class Form1
> >>
> >> Private index As Integer = 0
> >>
> >> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
> >>
> >> MessageBox.Show(index.ToString)
> >>
> >> index += 4
> >>
> >> End Sub
> >>
> >>End Class
>>
>>とりこびとさんこんにちは
>>わざわざサンプルソースありがとうございます。
>>保持しておく・・・そういうことだったんですね。
>>私は違う風にしていました。。
>>上のソースを参考にし、
>>n=0
>>n+index,n+1+index,n+2+indexとしてみたところやりたいことができました。
>>ありがとうございます。


すみません。ちなみに、listviewと連動したいんですが無理でしょうか?
例)ボタンでlistviewのアイテム6〜9までとり、また同じボタンでアイテム10〜13までとり。
そのご、listviewをクリックし、アイテム3〜6をpicturebox1〜4に取ったとします。
それでボタンを押しても、さっきボタンを押したアイテム14〜16を取ってしまいます。

listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?


引用返信 編集キー/
■4286 / inTopicNo.11)  Re[10]: ボタンでlistviewアイテムの取得
□投稿者/ επιστημη (543回)-(2007/06/12(Tue) 16:34:05)
επιστημη さんの Web サイト
> listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?

何故に無理と考えたのかな?


引用返信 編集キー/
■4290 / inTopicNo.12)  Re[10]: ボタンでlistviewアイテムの取得
□投稿者/ 特攻隊長まるるう (58回)-(2007/06/12(Tue) 17:20:57)
2007/06/12(Tue) 17:34:30 編集(投稿者)
No4285 (美流久 さん) に返信
> 例)ボタンでlistviewのアイテム6〜9までとり、また同じボタンでアイテム10〜13までとり。
> そのご、listviewをクリックし、アイテム3〜6をpicturebox1〜4に取ったとします。
> それでボタンを押しても、さっきボタンを押したアイテム14〜16を取ってしまいます。
>
> listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?

日本語の説明が分かり難いんですが、listviewをクリック(正確に表現するならアイテムの選択が変更されたとき)に、
保持している変数の値を、選択したアイテムのインデックスに置き換えれば、そこからボタンを押せば、4個ずつ
表示される。。。とそんな事がやりたいんでしょう。たぶん。

。。。ここまでプログラムしてきて『無理でしょうか』とか質問しないとできないことなのかな。。。
そろそろ、それぞれの処理を組み合わせれば、できそうなことが予想できる段階のはずですが。

(追記)
自分の希望する処理に必要なことを考えてください。

例えば今回は、
> それでボタンを押しても、さっきボタンを押したアイテム14〜16を取ってしまいます。
その原因は何ですか?
(答え)ボタンの処理で+4している index を変更していないからです。

では index がどんな値になれば
> listviewで取得したアイテムをボタンで7〜10
となりますか?
(答え)7です。

7という数字はどこから取得すべき数字ですか?
> そのご、listviewをクリックし、アイテム3〜6をpicturebox1〜4に取ったとします。
(答え)クリックしたアイテムのインデックス3に+4した数です。

じゃあ、クリックしたタイミングで変更してください。

。。。どこが出来ないのか問い詰めたいw。

引用返信 編集キー/
■4291 / inTopicNo.13)  Re[11]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (22回)-(2007/06/12(Tue) 17:24:05)
とりこびと さんの Web サイト
こんにちは。とりこびとです。

No4285 (美流久 さん) に返信

>listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?

質問に対する回答としては、

「無理ではありません。」

になります。

この掲示板で、ListView からの方法も、Button での方法も解決なさったのですよね?
あとは、それの組み合わせでできるはずです。

がんばってください。
引用返信 編集キー/
■4292 / inTopicNo.14)  Re[11]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (11回)-(2007/06/12(Tue) 17:27:36)
No4286 (επιστημη さん) に返信
>>listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?
>
> 何故に無理と考えたのかな?
>
>

επιστημηさん こんにちは
出来ないかと思いましたが普通に出来ますね☆

n=0
index +=4
picturebox1.image=image.fromfile(.items(n+index).text)
picturebox2/
picturebox3/
picturebox4/


ボタン1つでそれぞれ4つのpictureboxに1〜4まで(アイテムも1〜4)画像取得。
リストビューで、アイテム選び2〜5の画像取得。

このあとボタン押しても5〜8がとれてしまい。
+4づつ画像が取れます。でもそれはボタンで必要なコードなのですが、
listviewをクリックしたさいの動作というか、考え方がいまいち分からないのです。

> 何故に無理と考えたのかな?

とおっしゃるように、無理じゃないと気づいたのは、実際ボタンで一回listviewの後の画像を取得しているからです。

引用返信 編集キー/
■4293 / inTopicNo.15)  Re[11]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (12回)-(2007/06/12(Tue) 17:41:39)
No4290 (特攻隊長まるるう さん) に返信
> 2007/06/12(Tue) 17:34:30 編集(投稿者)
>
> ■No4285 (美流久 さん) に返信
>>例)ボタンでlistviewのアイテム6〜9までとり、また同じボタンでアイテム10〜13までとり。
>>そのご、listviewをクリックし、アイテム3〜6をpicturebox1〜4に取ったとします。
>>それでボタンを押しても、さっきボタンを押したアイテム14〜16を取ってしまいます。
> >
>>listviewで取得したアイテムをボタンで7〜10とlistviewとボタン交互みたいな感じでボタンで取得をしたいのですが無理でしょうか?
>
> 日本語の説明が分かり難いんですが、listviewをクリック(正確に表現するならアイテムの選択が変更されたとき)に、
> 保持している変数の値を、選択したアイテムのインデックスに置き換えれば、そこからボタンを押せば、4個ずつ
> 表示される。。。とそんな事がやりたいんでしょう。たぶん。
>
> 。。。ここまでプログラムしてきて『無理でしょうか』とか質問しないとできないことなのかな。。。
> そろそろ、それぞれの処理を組み合わせれば、できそうなことが予想できる段階のはずですが。
>
> (追記)
> 自分の希望する処理に必要なことを考えてください。
>
> 例えば今回は、
>>それでボタンを押しても、さっきボタンを押したアイテム14〜16を取ってしまいます。
> その原因は何ですか?
> (答え)ボタンの処理で+4している index を変更していないからです。
>
> では index がどんな値になれば
>>listviewで取得したアイテムをボタンで7〜10
> となりますか?
> (答え)7です。
>
> 7という数字はどこから取得すべき数字ですか?
>>そのご、listviewをクリックし、アイテム3〜6をpicturebox1〜4に取ったとします。
> (答え)クリックしたアイテムのインデックス3に+4した数です。
>
> じゃあ、クリックしたタイミングで変更してください。
>
> 。。。どこが出来ないのか問い詰めたいw。

まるるうさん こんにちは☆
とりこびとさん こんにちは☆
細かな説明ありがとうございます。
説明わかりづらくて申し訳ないですorz


がんばりますw
色々記述してきます。ありがとうございます
引用返信 編集キー/
■4294 / inTopicNo.16)  Re[12]: ボタンでlistviewアイテムの取得
□投稿者/ επιστημη (544回)-(2007/06/12(Tue) 17:57:10)
επιστημη さんの Web サイト
> このあとボタン押しても5〜8がとれてしまい。
> +4づつ画像が取れます。でもそれはボタンで必要なコードなのですが、
> listviewをクリックしたさいの動作というか、考え方がいまいち分からないのです。

うん、次回どれを取り込むかを決めるための変数 index、これを

- どこで書きかえるか
- なにに書きかえるか(あるいは書きかえないか)

がキモなのね。
つか、それ以外に何もない。そんだけじっくり考えたらええよ。


引用返信 編集キー/
■4296 / inTopicNo.17)  Re[12]: ボタンでlistviewアイテムの取得
□投稿者/ mあ (1回)-(2007/06/12(Tue) 18:19:33)
No4292 (美流久 さん) に返信

> とおっしゃるように、無理じゃないと気づいたのは、実際ボタンで一回listviewの後の画像を取得しているからです。
>

CodeProject か sourceforge の英語版で、ImageList で検索掛けると C++/MFC だがw、
サムネイルをクリックして拡大イメージを表示する、というイメージリストとリストビューを
うまく使ったというか、エクスプローラってこんな面倒なことを当たり前のようにやっている
んだよ、てなサンプルソースがありますね。これを改造して、スクロールバー1クリックで4
つの画像が入れ替わるようにしたら良いと思います。もちろん、本物画像をサムネイル化した
縮小画像を使って。VBに落とし込めれば、こちらのサンプル使った方が簡単かも。

#VB.NET のリストビューでもリフレクトイベントって実装できるのかしら???

質問者さんの画面イメージは・・・
「次へ」ボタンで 0-3 表示が、4-7,8-11,12-15 表示に切り替わる、みたいなものであると
想像しております。リストビューと PictureBox がどのように絡むのかがいまいち想像でき
ません。

リストビューのアイテムがこんなテキストの並び??だとして、
00-03.画像
04-07.画像 <== コレクリック
08-11.画像
12-15.画像

PictureBox1 に 04 画像を表示
PictureBox2 に 05 画像を表示
PictureBox3 に 06 画像を表示
PictureBox4 に 07 画像を表示

ボタンはどーゆー位置づけ??てか、ボタン要らないじゃん??と、思うのですがどうでしょうか?



こーゆーのなら想像できる、というか上のサンプルのまんま。
リストビューのアイテムは、、、
□画像00
□画像01
□画像02
□画像03

ピクチャーボックス1個に、リストビューでクリックしたアイテムが拡大表示される。

【ボタン】をクリックすると、リストビュー内のサムネイルが更新され、ピクチャーボックスがクリア。
□画像04
□画像05
□画像06
□画像07

てな感じ。
でも、リストビューなら外部のボタンではなくてスクロールバーを使いたいところだが・・・


※MIFES持っているなら図表・罫線モードで図を描いてもらえると想像つきやすいかと思います。
※文面・文字だけだと分かり辛い部分も図で表現することで若干補えますから。


お邪魔しました。

引用返信 編集キー/
■4357 / inTopicNo.18)  Re[13]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (14回)-(2007/06/14(Thu) 16:31:28)
mあさんコンニチハ

ボタンは必要なんです☆

時間がかかりましたが、未だにできません。
mあさん風みたいな感じで説明することにします。

[配置]
□listview1
□button1
□picturebox1〜4

例)
・listviewの中にはlargeimageのアイテムを全部で30個だとします。

したいこと)
・アイテム:0~3,4~7,8~11,12~15.....と四つづつ取得
・listviewでの取得もクリックで4つ取得。←コレは出来ています
・アイテム4をクリックし(4~7)取得したあとbuttonで8(8~11)からのアイテムを取得。
・buttonでは押すたんびにアイテム4つづつ取得(11~15)(16~19)。
・button(20~23)を押した途中でlistviewでアイテム3クリック(3~6)


出来ないこと)
・buttonのコードで変数index+4とすればlistviewで3(3~6)クリックした後にbuttonおしても最初は7~10で表示出来るのに2度目はlistviewクリック後のすぐ後ろの、4つのアイテムが取得でいません。

変数indexを何度か変えて見ましたが。

+4にすればbuttonをクリックするだけでは4つづつ取得できます。でも、変数indexを変えるとlistviewを選んだ(3~6)後、一回目のボタンクリックだと真後ろの画像(7~10)取得が出来ますが、2回目はボタンが聞かなくなります。でも+4とするとlistviewをクリックしたあとbuttonで取得するときに1回目は大丈夫ですが、同じ動作をすると2回目はダメになります。

わかりにくいでしょうか?butonのコードをいったん選び終わったらリセットする。という方がいいんでしょうか?




引用返信 編集キー/
■4360 / inTopicNo.19)  Re[14]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (23回)-(2007/06/14(Thu) 17:14:50)
とりこびと さんの Web サイト
No4357 (美流久 さん) に返信

こんにちは。とりこびとです。

επιστημη さんのヒントを台無しにしてしまいますが・・・。ざっと書きますね。

表示させる4つのうち最初のIndexさえ分かればそこから連続して4つ取得するだけですよね。

で、最初のIndexが変更されるのは、

・ListView から選んだとき
・Button をクリックしたとき

です。イメージできますか?

あと、

>大丈夫ですが、同じ動作をすると2回目はダメになります。

大丈夫、とかダメとかだと状況がよく分かりません。

引用返信 編集キー/
■4362 / inTopicNo.20)  Re[15]: ボタンでlistviewアイテムの取得
 
□投稿者/ 美流久 (15回)-(2007/06/14(Thu) 17:31:14)
とりこびとさん
こんにちは☆

>επιστημη さんのヒントを台無しにしてしまいますが・・・。ざっと書きますね。

επιστημηの↓ヒントも参考にさせて頂きました。
- どこで書きかえるか
- なにに書きかえるか(あるいは書きかえないか)

n=0←(.selecteditems(0).index)
dim a as integer=4

   'picturebox1
    PictureBox1.Image = Image.FromFile(.Items(n + a).Text)
これで、listviewクリックしたあと次の4枚をボタンで取得出来ますが
ボタンクリックできるのは一回だけです。

変数indexを+4にすると何度もボタンクリックでき、それぞれ4枚づつ取れます。
でも+4にすればlistview選んだ時に次の4枚が取れなくなります。


>・ListView から選んだとき
>・Button をクリックしたとき

イメージ出来ます☆

>大丈夫、とかダメとかだと状況がよく分かりません。
すみません。ダメというのは2回目のクリックは動作しませんという意味です。

引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -