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

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

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

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


(過去ログ 14 を表示中)

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

■4364 / inTopicNo.21)  Re[16]: ボタンでlistviewアイテムの取得
  
□投稿者/ 特攻隊長まるるう (60回)-(2007/06/14(Thu) 17:41:03)
No4362 (美流久 さん) に返信
できなかったですかぁ。。。
そんなに難しくないはずなんだけど、美流久 さんの説明が難しい。。。
とりあえず、以下のコードの動作でなんか不都合な点はありますか?

[VB.NET2003]←で作ってるけど、[VB2005]でも動くはず。
    Private m_index As Integer = 0

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

        m_index += 4
        Call DispIndex(m_index)

    End Sub

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged

        With Me.ListView1
            If .SelectedItems.Count <= 0 Then
                Exit Sub
            End If
            m_index = .SelectedItems(0).Index

            Call DispIndex(m_index)
        End With

    End Sub

    Private Sub DispIndex(ByVal StartIndex As Integer)

        For i As Integer = StartIndex To StartIndex + 3
            If i > Me.ListView1.Items.Count - 1 Then
                Exit Sub
            End If
            MessageBox.Show(i.ToString)
        Next

    End Sub

    Private Sub Form10_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        For i As Integer = 0 To 29
            Me.ListView1.Items.Add(i.ToString)
        Next

    End Sub

引用返信 編集キー/
■4365 / inTopicNo.22)  Re[16]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (24回)-(2007/06/14(Thu) 17:41:44)
とりこびと さんの Web サイト
とりこびとです。

No4362 (美流久 さん) に返信

> ボタンクリックできるのは一回だけです。

これ、確認なんですが、
クリックできないとは、ボタンのクリックイベントがまったく処理されないのですか?
2回目クリックしたときも1回目と同じものが表示されている、ということですか?
引用返信 編集キー/
■4366 / inTopicNo.23)  Re[12]: ボタンでlistviewアイテムの取得
□投稿者/ mあ (8回)-(2007/06/14(Thu) 17:44:17)
No4293 (美流久 さん) に返信

> 
> がんばりますw
> 色々記述してきます。ありがとうございます

流れをぶった切るわけには行かないので、こちらで試した画面をそのままコピペ
しようかと思いましたが、ちょっと保留します。ごめんなさい。

ヒント:
ListView 自体が30個の登録アイテムの位置情報を保持しています。

イメージが1〜4個、書き方がアレ?なんですけど、可変するのですか?
可変というか、表示/非表示の切り替えで画面の見た目が増減するだけなら、
この増減の肝は、ListView のデータの後ろ3個以内ですよね。

あとは分かりますよね?


引用返信 編集キー/
■4367 / inTopicNo.24)  Re[13]: ボタンでlistviewアイテムの取得
□投稿者/ mあ (9回)-(2007/06/14(Thu) 17:56:06)
誰もサンプル提示しないから”新人”が流れぶった切るのもどーかと・・・
てことで、VB6で動く奴。
でも、

「あの人のサンプルで出来ました、ありがとうございました」
ってコメントだけは勘弁。
皆が求めているのは、
 どの部分が理解不足だったのか?
ってことですから。ここらへんはサンプルで動くコードに満足しないで、
はっきりさせる必要があります。このスレを参考にする後進のためにも。
宜しくお願いします。

VB6 標準フォームプロジェクト1個作って適当に保存。form1 をエディタで
開き、以下をコピペして上書き保存。VB6起動して実行すれば出来上がりです。
VB2005 はイベントの中身をコピーし、PictureBox の代わりに TextBox で代用
しているのでそれにしたがってください。ImageTxt は 4つのコントロール配列
です。

-- ここから(この行を除く)

VERSION 5.00
Begin VB.Form Form1
Caption = "Form1"
ClientHeight = 5340
ClientLeft = 60
ClientTop = 345
ClientWidth = 7215
LinkTopic = "Form1"
ScaleHeight = 5340
ScaleWidth = 7215
StartUpPosition = 3 'Windows の既定値
Begin VB.ListBox List1
Height = 3480
Left = 480
TabIndex = 5
Top = 240
Width = 6495
End
Begin VB.CommandButton Command1
Caption = "Command1"
Height = 1095
Left = 4680
TabIndex = 4
Top = 3840
Width = 2295
End
Begin VB.TextBox ImageTxt
Height = 495
Index = 3
Left = 2520
TabIndex = 3
Text = "Text4"
Top = 4440
Width = 2055
End
Begin VB.TextBox ImageTxt
Height = 495
Index = 2
Left = 600
TabIndex = 2
Text = "Text3"
Top = 4440
Width = 1695
End
Begin VB.TextBox ImageTxt
Height = 495
Index = 1
Left = 2520
TabIndex = 1
Text = "Text2"
Top = 3840
Width = 2055
End
Begin VB.TextBox ImageTxt
Height = 495
Index = 0
Left = 600
TabIndex = 0
Text = "Text1"
Top = 3840
Width = 1695
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub Form_Load()

'リスト初期化(アイテム30 個)
For i = 1 To 30 Step 1
List1.AddItem Right("000" & CStr(i), 3)
Next

End Sub

Private Sub List1_Click()

Dim iMax As Integer
iMax = List1.ListCount - (List1.ListIndex)

If iMax > 4 Then iMax = 4

Dim i As Integer
i = 0
Do While i < iMax
ImageTxt(i).Text = List1.List(List1.ListIndex + i)
ImageTxt(i).Enabled = True
ImageTxt(i).BackColor = &H80000005

i = i + 1
Loop

Do While i < ImageTxt.Count
ImageTxt(i).Enabled = False
ImageTxt(i).Text = ""
ImageTxt(i).BackColor = &H8000000A
i = i + 1
Loop

End Sub

Private Sub Command1_Click()

'選択無ければ先頭から、あればその選択から4つ先、
'4つ先が最大値越えたら、先頭に戻る
Dim idx As Integer
idx = List1.ListIndex
If idx < 0 Then idx = 0 Else idx = idx + 4

If Not (idx < List1.ListCount) Then idx = 0

List1.Selected(idx) = True

End Sub


-- ここまで(これを除く)



引用返信 編集キー/
■4382 / inTopicNo.25)  Re[14]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (16回)-(2007/06/15(Fri) 13:03:04)

まるるうさん
とりこびとさん
mあさん
こんにちは
コードありがとうございます。
サンプルコード使いませんでしたが、解決の道が分かりました。
---------------
間違えてたコード
n=0←(.selectedites(0).index)
dim index as integer
index +=4

picturebox1.image=image.fromfile(.items(n+index).text)
---------------
解決したコード
n=0←(.selectedites(0).index)
n +=4

picturebox1.image=image.fromfile(.items(n).text)
---------------
としました。
変数indexを変える事を考えてばかりでnをどうこうする事を考えてませんでしたorz
listviewで記述したindex(変数n)を+4にし、出来ました。
私の説明不足だったと思いました。

すみません&ありがとうございました。
解決済み
引用返信 編集キー/
■4389 / inTopicNo.26)  Re[15]: ボタンでlistviewアイテムの取得
□投稿者/ とりこびと (25回)-(2007/06/15(Fri) 14:43:37)
とりこびと さんの Web サイト
No4382 (美流久 さん) に返信

ちょっと気になるので・・・こんな感じの↓

□□□□□□□□□□□□□□□□□□□□ はじめは何も選択されていなくて

□□■□□□□□□□□□□□□□□□□□ ListView で3つ目を選んだとしたら表示する4つの最初のindex は 3。(index = selectedites(0).index)

□□□□□□■□□□□□□□□□□□□□ そこで Button をクリックしたら表示する4つの最初のindex は 3+4 で 7。(index += 4)

□□□□□□□□□□■□□□□□□□□□ もう一度 Button をクリックしたら表示する4つの最初のindex は 7+4 で 11。(index += 4)

□□□□■□□□□□□□□□□□□□□□ で、もう一度 ListView から 5つ目を選んだとしたら表示する4つの最初のindex は 5。(index = selectedites(0).index)

□□□□□□□□■□□□□□□□□□□□ そこで Button をクリックしたら表示する4つの最初のindex は 5+4 で 9。(index += 4)

ことがしたかったと思っていたのですが、違っていましたか?

もし合っているのなら、表示する最初のindexが分かっていればいいと以前にも書きましたが、

ListView から選択されたときは選択されたもののindex(selectedites(0).indexのこと)が表示する最初のindexがそれに、つまり、

index = selectedites(0).index

Button がクリックしたときは今表示されているものの最初の Index(保持しているIndexのこと) に4足したものがそれに、つまり、

index = index + 4

で、n とかなくてもできそうなんですが・・・。
解決済み
引用返信 編集キー/
■4391 / inTopicNo.27)  Re[16]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (17回)-(2007/06/15(Fri) 15:38:27)
とりこびとさんの説明で合ってます☆

> index = index + 4

あ!Σ(・д・;)これでもできました!
勉強になります。長々と説明本当にありがとうございますorz
解決済み
引用返信 編集キー/
■4392 / inTopicNo.28)  Re[17]: ボタンでlistviewアイテムの取得
□投稿者/ 美流久 (18回)-(2007/06/15(Fri) 15:40:28)
No4391 (美流久 さん) に返信
> とりこびとさんの説明で合ってます☆
>
>>index = index + 4
>
> あ!Σ(・д・;)これでもできました!
> 勉強になります。長々と説明本当にありがとうございますorz

ちなみに、私の場合↓でしたので

Private Sub itemset()
If Not PictureBox1.Image Is Nothing Then
With Me.ListView1
n = .SelectedItems(0).Index
End With
End If
End Sub

n +=4でも
n=n+4でもどっちでもできました☆
解決済み
引用返信 編集キー/

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

このトピックに書きこむ

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

管理者用

- Child Tree -