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

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

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

リストボックスでの省略表示と、選択時には元の全文字にするには

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

■94503 / inTopicNo.1)  リストボックスでの省略表示と、選択時には元の全文字にするには
  
□投稿者/ はる (10回)-(2020/04/15(Wed) 23:10:18)

分類:[.NET 全般] 

お世話になります。
下のように「省略表示」と「元の全文字の代入」にすることが可能であれば教えてください。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dat(1) As String
        dat(0) = "01234"
        dat(1) = "56789"
        '
        ListBox1.Items.Clear()
        For i = 0 To 1
            'ListBox1.Items.Add(dat(i))       
            ListBox1.Items.Add(Mid(dat(i), 1, 2))    'ここでは"01234" など右から2文字のみの省略表示
        Next
    End Sub
    '
    Dim dat As String
    Private Sub ListBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        For i = 0 To ListBox1.Items.Count - 1
            If ListBox1.GetSelected(i) = True Then
                dat = ListBox1.Items(i)        'ここでのdatには元の"01234"など全文字の代入
            End If
        Next
    End Sub

引用返信 編集キー/
■94504 / inTopicNo.2)  Re[1]: リストボックスでの省略表示と、選択時には元の全文字にするには
□投稿者/ KOZ (109回)-(2020/04/16(Thu) 01:56:32)
2020/04/16(Thu) 01:57:12 編集(投稿者)
No94503 (はる さん) に返信

標準では、ListBox のリスト部分に表示されるのは、Items コレクションの
要素を ToString() したものになります。

DisplayMember に要素の持つプロパティ名を指定すると、その値が
表示されます。

Imports VB = Microsoft.VisualBasic

Public Class Form1

    Structure Item1

        Public Property Value As String

        Public Sub New(value As String)
            Me.Value = value
        End Sub

        Public Overrides Function ToString() As String
            Return VB.Right(Me.Value, 2)
        End Function

    End Structure

    Structure Item2

        Public Property Value As String

        Public Sub New(value As String)
            Me.Value = value
        End Sub

        Public ReadOnly Property Display
            Get
                Return VB.Right(Me.Value, 2)
            End Get
        End Property

    End Structure

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dat(1) As String
        dat(0) = "01234"
        dat(1) = "56789"
        With ListBox1
            .Items.Clear()
            For i = 0 To 1
                .Items.Add(New Item1(dat(i)))
            Next
        End With
        With ListBox2
            .DisplayMember = "Display"
            .Items.Clear()
            For i = 0 To 1
                .Items.Add(New Item2(dat(i)))
            Next
        End With
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        With ListBox1
            If .SelectedIndex <> -1 Then
                MsgBox(DirectCast(.Items(.SelectedIndex), Item1).Value)
            End If
        End With
    End Sub

    Private Sub ListBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox2.SelectedIndexChanged
        With ListBox2
            If .SelectedIndex <> -1 Then
                MsgBox(DirectCast(.Items(.SelectedIndex), Item2).Value)
            End If
        End With
    End Sub

End Class

引用返信 編集キー/
■94530 / inTopicNo.3)  Re[2]: リストボックスでの省略表示と、選択時には元の全文字にするには
□投稿者/ はる (11回)-(2020/04/17(Fri) 00:07:06)
No94504 (KOZ さん) に返信

希望通りになりました。
ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ