<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Visual Basic | 志摩市のパソコン屋 | One&amp;Only</title>
	<atom:link href="https://www.oaopc.com/category/visual-basic/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.oaopc.com</link>
	<description>パソコンから、ものづくりまで。志摩市の暮らしにデジタルな便利さを。</description>
	<lastBuildDate>Sun, 24 Sep 2023 03:02:21 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.oaopc.com/wp-content/uploads/2021/01/akd37-r41bs-100x100.png</url>
	<title>Visual Basic | 志摩市のパソコン屋 | One&amp;Only</title>
	<link>https://www.oaopc.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">188148420</site>	<item>
		<title>販売管理アプリ（インボイス対応）を公開</title>
		<link>https://www.oaopc.com/hanbai-release/</link>
					<comments>https://www.oaopc.com/hanbai-release/#respond</comments>
		
		<dc:creator><![CDATA[Kebarhythm]]></dc:creator>
		<pubDate>Sun, 24 Sep 2023 03:02:21 +0000</pubDate>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Visual Basic]]></category>
		<guid isPermaLink="false">https://www.oaopc.com/?p=2531</guid>

					<description><![CDATA[<p>10月から始まるインボイス制度に対応するため、突貫工事的開発で作っている販売管理アプリが、請求書、見積書、領収書が発行できるところまで出来たので公開してみました。そこそこ使えるのではないかと思っております。ただ、、、イン [&#8230;]</p>
The post <a href="https://www.oaopc.com/hanbai-release/">販売管理アプリ（インボイス対応）を公開</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="951" height="756" src="https://www.oaopc.com/wp-content/uploads/2023/09/2023-09-21-234415.png" alt="" class="wp-image-2520" srcset="https://www.oaopc.com/wp-content/uploads/2023/09/2023-09-21-234415.png 951w, https://www.oaopc.com/wp-content/uploads/2023/09/2023-09-21-234415-300x238.png 300w, https://www.oaopc.com/wp-content/uploads/2023/09/2023-09-21-234415-768x611.png 768w" sizes="(max-width: 951px) 100vw, 951px" /></figure>



<p class="wp-block-paragraph">10月から始まるインボイス制度に対応するため、突貫工事的開発で作っている販売管理アプリが、請求書、見積書、領収書が発行できるところまで出来たので公開してみました。そこそこ使えるのではないかと思っております。ただ、、、インストールに少々手順がありますので詳細はこちらで↓↓↓で確認してください。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-related">

<a href="https://www.oaopc.com/app-hanbai/" title="販売管理アプリ（請求書・見積書・領収書発行）" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img decoding="async" src="https://www.oaopc.com/wp-content/uploads/cocoon-resources/blog-card-cache/4a8c59328844afee4cfef6f3b6a5738f.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">販売管理アプリ（請求書・見積書・領収書発行）</div><div class="blogcard-snippet external-blogcard-snippet">請求書・見積書・領収書が発行できるWindowsアプリケーションです。インボイス制度が始まるときに、自分用に作成しました。月１回の作業が必須ですが、それ以外はフリーです。</div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.oaopc.com/app-hanbai2/" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">www.oaopc.com</div></div></div></div></a>
</div>



<p class="wp-block-paragraph">あまりテストができていないので、バグを見つけたときは<a href="https://www.oaopc.com/contact/" target="_blank" title="">CONTACT</a>から報告していただけるとうれしいです。^^</p>The post <a href="https://www.oaopc.com/hanbai-release/">販売管理アプリ（インボイス対応）を公開</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.oaopc.com/hanbai-release/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2531</post-id>	</item>
		<item>
		<title>VB.NETでサブディレクトリを取得・処理するサンプル</title>
		<link>https://www.oaopc.com/vb-sample/</link>
					<comments>https://www.oaopc.com/vb-sample/#respond</comments>
		
		<dc:creator><![CDATA[Kebarhythm]]></dc:creator>
		<pubDate>Tue, 04 May 2021 08:45:41 +0000</pubDate>
				<category><![CDATA[Visual Basic]]></category>
		<category><![CDATA[備忘録]]></category>
		<guid isPermaLink="false">https://www.oaopc.com/?p=2123</guid>

					<description><![CDATA[<p>ターゲットディレクトリ以下の全サブディレクトリを取得・処理するサンプルです。やり方はいくらでもあると思いますがシンプルにできたので残しときます。</p>
The post <a href="https://www.oaopc.com/vb-sample/">VB.NETでサブディレクトリを取得・処理するサンプル</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">ターゲットディレクトリ以下の全サブディレクトリを取得・処理するサンプルです。<br>やり方はいくらでもあると思いますがシンプルにできたので残しときます。</p>


<div class="wp-block-syntaxhighlighter-code my_syntaxhighlighter"><pre class="brush: vb; title: ; notranslate">
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim dInfo As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(&quot;ターゲットディレクトリ&quot;)
        Dim dArray As New List(Of System.IO.DirectoryInfo)
        Dim index As Integer

        If Not dInfo.Exists Then
            Beep()
            Exit Sub
        End If

        dArray.Add(dInfo)
        index = 0
        While index &lt; dArray.Count
            &#039; 現在のディレクトリを取得
            dInfo = dArray(index)

            &#039; 現在のディレクトリのサブディレクトリをリストに追加する
            dArray.AddRange(dInfo.GetDirectories)

            &#039; 現在のディレクトリを処理する
            Console.WriteLine(dInfo.FullName)

            index += 1
        End While

        &#039; リスト作成後にディレクトリの処理をするときはこちらから
        For Each dInfo In dArray
            Console.WriteLine(dInfo.FullName)
        Next

    End Sub
</pre></div>The post <a href="https://www.oaopc.com/vb-sample/">VB.NETでサブディレクトリを取得・処理するサンプル</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.oaopc.com/vb-sample/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2123</post-id>	</item>
		<item>
		<title>JANコードを作ってみました</title>
		<link>https://www.oaopc.com/barcode-jan/</link>
					<comments>https://www.oaopc.com/barcode-jan/#respond</comments>
		
		<dc:creator><![CDATA[Kebarhythm]]></dc:creator>
		<pubDate>Sun, 20 Oct 2019 14:59:10 +0000</pubDate>
				<category><![CDATA[Visual Basic]]></category>
		<guid isPermaLink="false">http://www.morien.mydns.jp/?p=1296</guid>

					<description><![CDATA[<p>バーコードのJANコードがプリントできると、商品管理や棚卸など色々なことに使えるので、使いやすそうなアプリを探してみたんだけどボクが使えそうなアプリはなかなか見つかりません。でもネット上にはたくさんの情報がアップされてい [&#8230;]</p>
The post <a href="https://www.oaopc.com/barcode-jan/">JANコードを作ってみました</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></description>
										<content:encoded><![CDATA[<p class="has-text-align-left wp-block-paragraph">バーコードのJANコードがプリントできると、商品管理や棚卸など色々なことに使えるので、使いやすそうなアプリを探してみたんだけどボクが使えそうなアプリはなかなか見つかりません。<br>でもネット上にはたくさんの情報がアップされているのでそれらを参考にプログラムを作ってみました。<br>（参考にさせていただいたサイト: <a rel="noopener" aria-label="バーコードの作り方 (opens in a new tab)" href="http://www5d.biglobe.ne.jp/~bar/spec/barspec.html" target="_blank">バーコードの作り方</a>）</p>



<span id="more-1296"></span>



<p class="has-text-align-right has-small-font-size wp-block-paragraph">↓ 見やすいプログラムではないです&#8230; ^^;</p>


<div class="wp-block-syntaxhighlighter-code my_syntaxhighlighter"><pre class="brush: vb; auto-links: false; title: ; notranslate">
Public Class JANCode
    Private bit_image()() As Byte = {
            New Byte() {13, 39, 63},
            New Byte() {25, 51, 52},
            New Byte() {19, 27, 50},
            New Byte() {61, 33, 49},
            New Byte() {35, 29, 44},
            New Byte() {49, 57, 38},
            New Byte() {47, 5, 35},
            New Byte() {59, 17, 42},
            New Byte() {55, 9, 41},
            New Byte() {11, 23, 37}
        }   &#039;{左側奇数パリティ, 左側偶数パリティ, 付加文字の組み合わせ}

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; 1モジュールの幅
    &#039;&#039;&#039; &lt;/summary&gt;
    Friend Property ModuleWidth As Integer = 3

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; JAN-13 バーコードイメージを作る。
    &#039;&#039;&#039; &lt;/summary&gt;
    &#039;&#039;&#039; &lt;param name=&quot;code&quot;&gt;バーコード文字列&lt;/param&gt;
    &#039;&#039;&#039; &lt;returns&gt;バーコードイメージ&lt;/returns&gt;
    Friend Function MakeBarcode13(ByVal code As String) As System.Drawing.Image
        If code.Length &lt;&gt; 12 And code.Length &lt;&gt; 13 Then
            MessageBox.Show(&quot;12桁または13桁のコードを指定してください。&quot;, &quot;JAN-13&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return New Bitmap(1, 1)
        End If

        Dim Quiet As Integer = ModuleWidth * 10                 &#039;クワイエットゾーン
        Dim code_images As New List(Of Byte)                    &#039;コードの描画ビットイメージ
        Dim check_digit() As Integer = New Integer() {0, 0, 0}  &#039;チェックデジット
        Dim codes(12) As Integer                                &#039;コードの数値配列

        For i As Integer = 0 To code.Length - 1
            If Integer.TryParse(code.Substring(i, 1), codes(i)) = False Then
                MessageBox.Show(&quot;数値以外のコードが含まれています。&quot;, &quot;JAN-13&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return New Bitmap(1, 1)
            End If
        Next

        check_digit(0) = codes(0)
        For i As Integer = 1 To codes.Length - 2
            If i &lt;= 6 Then
                If (bit_image(codes(0))(2) And (1 &lt;&lt; (-i + 6))) &lt;&gt; 0 Then   &#039;付加文字を判定
                    code_images.Add(bit_image(codes(i))(0))                 &#039;左側奇数パリティ
                Else
                    code_images.Add(bit_image(codes(i))(1))                 &#039;左側偶数パリティ
                End If
            Else
                code_images.Add((Not (bit_image(codes(i))(0))) And &amp;H7F)    &#039;右側偶数パリティ(左側奇数パリティの反転)
            End If

            If i Mod 2 = 0 Then
                check_digit(0) += codes(i)
            Else
                check_digit(1) += codes(i)
            End If
        Next

        &#039; チェックデジットの処理
        check_digit(2) = 10 - Integer.Parse((check_digit(0) + check_digit(1) * 3).ToString.PadLeft(6, &quot;0&quot;).Substring(5, 1))
        check_digit(2) = If(check_digit(2) = 10, 0, check_digit(2))
        If code.Length = 13 AndAlso check_digit(2) &lt;&gt; codes(12) Then  &#039;引数が13桁の時、チェックデジットを比較
            MessageBox.Show(&quot;チェックデジットが一致しません。&quot;, &quot;JAN-13&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return New Bitmap(1, 1)
        End If
        codes(12) = check_digit(2)
        code_images.Add((Not (bit_image(codes(12))(0))) And &amp;H7F)

        &#039;描画先とするImageオブジェクトを作成する
        Dim char_width As Integer = ModuleWidth * 7
        Dim canvas_width As Integer = Quiet * 2 + ModuleWidth * (3 + 5 + 3) + code_images.Count * char_width
        Dim canvas_height As Integer = (canvas_width - Quiet * 2) * 0.3
        Dim canvas As New Bitmap(canvas_width, canvas_height)

        &#039;ImageオブジェクトのGraphicsオブジェクトを作成する
        Using g As Graphics = Graphics.FromImage(canvas)
            Dim pos As Integer = Quiet

            g.FillRectangle(Brushes.White, 0, 0, canvas.Width, canvas.Height)

            For cnt As Integer = 0 To code_images.Count - 1
                If cnt = 0 Then
                    pos = PrintBar(g, 5, pos, 3, canvas.Height)    &#039;左側のガードバー
                ElseIf cnt = 6 Then
                    pos = PrintBar(g, 10, pos, 5, canvas.Height)   &#039;センターバー
                End If

                pos = PrintBar(g, code_images(cnt), pos, 7, canvas.Height)     &#039;コード

                If cnt = code_images.Count - 1 Then
                    PrintBar(g, 5, pos, 3, canvas.Height)          &#039;右側のガードバー
                End If
            Next
        End Using

        Return canvas
    End Function

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; JAN-8 バーコードイメージを作る。
    &#039;&#039;&#039; &lt;/summary&gt;
    &#039;&#039;&#039; &lt;param name=&quot;code&quot;&gt;バーコード文字列&lt;/param&gt;
    &#039;&#039;&#039; &lt;returns&gt;バーコードイメージ&lt;/returns&gt;
    Friend Function MakeBarcode8(ByVal code As String) As System.Drawing.Image
        If code.Length &lt;&gt; 7 And code.Length &lt;&gt; 8 Then
            MessageBox.Show(&quot;7桁または8桁のコードを指定してください。&quot;, &quot;JAN-8&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return New Bitmap(1, 1)
        End If

        Dim Quiet As Integer = ModuleWidth * 10                     &#039;クワイエットゾーン
        Dim code_values As New List(Of Byte)                        &#039;コードの描画ビットイメージ
        Dim check_digit() As Integer = New Integer() {0, 0, 0}      &#039;チェックデジット
        Dim codes(7) As Integer                                     &#039;コードの数値配列

        For i As Integer = 0 To code.Length - 1
            If Integer.TryParse(code.Substring(i, 1), codes(i)) = False Then
                MessageBox.Show(&quot;数値以外のコードが含まれています。&quot;, &quot;JAN-8&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return New Bitmap(1, 1)
            End If
        Next

        For i As Integer = 0 To codes.Length - 2
            If i &lt;= 3 Then
                code_values.Add(bit_image(codes(i))(0))                     &#039;左側奇数パリティ
            Else
                code_values.Add((Not (bit_image(codes(i))(0))) And &amp;H7F)    &#039;右側偶数パリティ(左側奇数パリティの反転)
            End If

            If i Mod 2 = 0 Then
                check_digit(1) += codes(i)
            Else
                check_digit(0) += codes(i)
            End If
        Next

        check_digit(2) = 10 - Integer.Parse((check_digit(0) + check_digit(1) * 3).ToString.PadLeft(6, &quot;0&quot;).Substring(5, 1))
        check_digit(2) = If(check_digit(2) = 10, 0, check_digit(2))
        If code.Length = 8 AndAlso check_digit(2) &lt;&gt; codes(7) Then  &#039;引数が8桁の時、チェックデジットを比較
            MessageBox.Show(&quot;チェックデジットが一致しません。&quot;, &quot;JAN-8&quot;, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return New Bitmap(1, 1)
        End If
        codes(7) = check_digit(2)
        code_values.Add((Not (bit_image(codes(7))(0))) And &amp;H7F)

        &#039;描画先とするImageオブジェクトを作成する
        Dim char_width As Integer = ModuleWidth * 7
        Dim canvas_width As Integer = Quiet * 2 + ModuleWidth * (3 + 5 + 3) + code_values.Count * char_width
        Dim canvas_height As Integer = (canvas_width - Quiet * 2) * 0.15
        Dim canvas As New Bitmap(canvas_width, canvas_height)

        &#039;ImageオブジェクトのGraphicsオブジェクトを作成する
        Using g As Graphics = Graphics.FromImage(canvas)
            Dim pos As Integer = Quiet

            g.FillRectangle(Brushes.White, 0, 0, canvas.Width, canvas.Height)

            For cnt As Integer = 0 To code_values.Count - 1
                If cnt = 0 Then
                    pos = PrintBar(g, 5, pos, 3, canvas.Height)    &#039;左側のガードバー
                ElseIf cnt = 4 Then
                    pos = PrintBar(g, 10, pos, 5, canvas.Height)   &#039;センターバー
                End If

                pos = PrintBar(g, code_values(cnt), pos, 7, canvas.Height)     &#039;コード

                If cnt = code_values.Count - 1 Then
                    PrintBar(g, 5, pos, 3, canvas.Height)          &#039;右側のガードバー
                End If
            Next
        End Using

        Return canvas
    End Function

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; バーコードの1アイテムを描画
    &#039;&#039;&#039; &lt;/summary&gt;
    &#039;&#039;&#039; &lt;param name=&quot;g&quot;&gt;Graphics&lt;/param&gt;
    &#039;&#039;&#039; &lt;param name=&quot;item&quot;&gt;描画するアイテム&lt;/param&gt;
    &#039;&#039;&#039; &lt;param name=&quot;pos&quot;&gt;描画開始位置&lt;/param&gt;
    &#039;&#039;&#039; &lt;param name=&quot;bit_count&quot;&gt;描画アイテムのビット長&lt;/param&gt;
    &#039;&#039;&#039; &lt;param name=&quot;height&quot;&gt;バーの高さ&lt;/param&gt;
    &#039;&#039;&#039; &lt;returns&gt;描画終了位置&lt;/returns&gt;
    Private Function PrintBar(g As Graphics, item As Byte, pos As Integer, bit_count As Integer, height As Single) As Integer
        For i As Integer = bit_count - 1 To 0 Step -1
            If (item And (1 &lt;&lt; i)) = 0 Then
                pos += ModuleWidth
            Else
                &#039;--- ﾊﾞｰを描画
                For j As Integer = 1 To ModuleWidth
                    Using p As New Pen(Color.Black, 1)
                        g.DrawLine(p, pos, 0, pos, If(bit_count &lt; 7, height, height * 5 / 6))
                    End Using
                    pos += 1
                Next
            End If
        Next

        Return pos
    End Function
End Class
</pre></div>


<p class="wp-block-paragraph">JAN-13とJAN-8のSystem.Drawing.Imageを返します。<br>使い方はこんな感じ。</p>


<div class="wp-block-syntaxhighlighter-code my_syntaxhighlighter"><pre class="brush: vb; title: ; notranslate">
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim JanCode As New JANCode With {
            .ModuleWidth = 2
        }
        PictureBox1.Image = JanCode.MakeBarcode13(&quot;4547894155004&quot;)
        PictureBox1.Image.Save(&quot;C:\JanCode.jpg&quot;)
    End Sub
</pre></div>


<p class="wp-block-paragraph">サンプルから作られた画像がこちら。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="345" height="86" src="https://www.oaopc.com/wp-content/uploads/2019/10/aaa.png" alt="" class="wp-image-1300" srcset="https://www.oaopc.com/wp-content/uploads/2019/10/aaa.png 345w, https://www.oaopc.com/wp-content/uploads/2019/10/aaa-300x75.png 300w" sizes="(max-width: 345px) 100vw, 345px" /></figure>



<p class="wp-block-paragraph">この画像を適当なサイズでプリントして使います。<br>今のところ数字は必要ないので描画してません。<br>もしもご要望があったりなんかしたら数字付けるかも。。</p>The post <a href="https://www.oaopc.com/barcode-jan/">JANコードを作ってみました</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.oaopc.com/barcode-jan/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1296</post-id>	</item>
		<item>
		<title>ListViewのアイテム登録を高速に</title>
		<link>https://www.oaopc.com/listview-fast-additem/</link>
					<comments>https://www.oaopc.com/listview-fast-additem/#respond</comments>
		
		<dc:creator><![CDATA[Kebarhythm]]></dc:creator>
		<pubDate>Wed, 02 Oct 2019 09:21:02 +0000</pubDate>
				<category><![CDATA[Visual Basic]]></category>
		<guid isPermaLink="false">http://www.morien.mydns.jp/?p=1244</guid>

					<description><![CDATA[<p>ListViewのアイテム登録は工夫しないと遅いです。10000件のアイテム登録のサンプルを作ってみました。 結果は&#8230;Button1: 14,835msButton2: 3,698msButton3: 1,9 [&#8230;]</p>
The post <a href="https://www.oaopc.com/listview-fast-additem/">ListViewのアイテム登録を高速に</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">ListViewのアイテム登録は工夫しないと遅いです。<br>10000件のアイテム登録のサンプルを作ってみました。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="675" height="497" src="https://www.oaopc.com/wp-content/uploads/2019/10/2019-10-02-092043.png" alt="" class="wp-image-1254" srcset="https://www.oaopc.com/wp-content/uploads/2019/10/2019-10-02-092043.png 675w, https://www.oaopc.com/wp-content/uploads/2019/10/2019-10-02-092043-300x221.png 300w" sizes="(max-width: 675px) 100vw, 675px" /></figure>



<span id="more-1244"></span>


<div class="wp-block-syntaxhighlighter-code my_syntaxhighlighter"><pre class="brush: vb; highlight: [30,40,51,58,62,65]; title: ; notranslate">
Public Class Form1
    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; 普通にデータ登録
    &#039;&#039;&#039; &lt;/summary&gt;
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim item As ListViewItem
        Dim sw As Stopwatch = Stopwatch.StartNew

        ListView1.Items.Clear()

        For i As Integer = 1 To 10000
            item = ListView1.Items.Add(i.ToString(&quot;D6&quot;))
            item.SubItems.Add(&quot;2&quot;)
            item.SubItems.Add(&quot;3&quot;)
        Next

        ListView1.EnsureVisible(ListView1.Items.Count - 1)

        sw.Stop()
        Console.WriteLine(&quot;Button1: &quot; &amp; sw.ElapsedMilliseconds &amp; &quot;ms&quot;)
    End Sub

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; データ登録が終わるまで描画をストップ
    &#039;&#039;&#039; &lt;/summary&gt;
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim item As ListViewItem
        Dim sw As Stopwatch = Stopwatch.StartNew

        ListView1.BeginUpdate()
        ListView1.Items.Clear()

        For i As Integer = 1 To 10000
            item = ListView1.Items.Add(i.ToString(&quot;D6&quot;))
            item.SubItems.Add(&quot;2&quot;)
            item.SubItems.Add(&quot;3&quot;)
        Next

        ListView1.EnsureVisible(ListView1.Items.Count - 1)
        ListView1.EndUpdate()

        sw.Stop()
        Console.WriteLine(&quot;Button2: &quot; &amp; sw.ElapsedMilliseconds &amp; &quot;ms&quot;)
    End Sub

    &#039;&#039;&#039; &lt;summary&gt;
    &#039;&#039;&#039; リストにデータを登録した後、リストビューにまとめて登録
    &#039;&#039;&#039; &lt;/summary&gt;
    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Dim item As ListViewItem
        Dim items As New List(Of ListViewItem)
        Dim sw As Stopwatch = Stopwatch.StartNew

        ListView1.BeginUpdate()
        ListView1.Items.Clear()

        For i As Integer = 1 To 10000
            item = New ListViewItem(i.ToString(&quot;D6&quot;))
            item.SubItems.Add(&quot;2&quot;)
            item.SubItems.Add(&quot;3&quot;)

            items.Add(item)
        Next

        ListView1.Items.AddRange(items.ToArray)
        ListView1.EnsureVisible(ListView1.Items.Count - 1)
        ListView1.EndUpdate()

        sw.Stop()
        Console.WriteLine(&quot;Button3: &quot; &amp; sw.ElapsedMilliseconds &amp; &quot;ms&quot;)
    End Sub
End Class

</pre></div>


<p class="wp-block-paragraph">結果は&#8230;<br>Button1: 14,835ms<br>Button2: 3,698ms<br>Button3: 1,940ms<br>Button1: 15,506ms<br>Button2: 4,139ms<br>Button3: 1,960ms</p>



<p class="wp-block-paragraph">Button3が一番早いです。<br>Button3のBeginUpdate、EndUpdateはなくてもあまり変わりません。</p>



<p class="wp-block-paragraph">おまけ&#8230;登録スピードにはあまり影響しないですけど、サブアイテム登録のサンプルも置いときます。コーディングには好みがありますけどボクはこっちで登録してます。</p>


<div class="wp-block-syntaxhighlighter-code my_syntaxhighlighter"><pre class="brush: vb; title: ; notranslate">
            item.SubItems.AddRange(New String() {
                "2",
                "3"
            })
</pre></div>The post <a href="https://www.oaopc.com/listview-fast-additem/">ListViewのアイテム登録を高速に</a> first appeared on <a href="https://www.oaopc.com">志摩市のパソコン屋 | One&Only</a>.]]></content:encoded>
					
					<wfw:commentRss>https://www.oaopc.com/listview-fast-additem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1244</post-id>	</item>
	</channel>
</rss>
