すらすらプログラマーへのお問い合わせ
すらすらのブログ
アクセス数  累計:000,714,246  昨日:000,000,156  本日:000,000,020
Loading
リストボックス
.NET プログラミング
プロパティグリッド
印刷
リストボックス
スレッド
リストビュー
インストーラー
やってみよう!

できるVisual Studio 2015 Windows /Android/iOS アプリ対応

独習C# 第3版

VisualBasic2013パーフェクトマスター (Perfect Master SERIES)

プログラミング.NET Framework 第4版 (Microsoft Press)

VisualBasic2013逆引き大全555の極意

猫でもわかるWindowsプログラミング 第4版 (猫でもわかるプログラミング)

VisualC#2013逆引き大全555の極意

描画の高速化 最終更新:2010/07/15
【Amazon ランキング:本 - ゲーム攻略・ゲームブック】

リストボックスはアイテム追加時に再描画を行っています。そのため大量にアイテムを追加すると大変時間がかかります。
そこでリストボックスには一時的に描画を停止させるメソッドが用意されています。
アイテムを追加している間は描画を停止させておいて、追加が終わったら一気に描画させることで無駄を省くことができます。
見た目もちらつきが抑えられてよくなるのでぜひ試してみてください。

フォームの作成
リストボックスの描画を停止させるには BeginUpdate() をメソッドを使用します。描画を再開させるいは EndUpdate() メソッドを使用します。
[VB]
Me.listBox1.BeginUpdate()
Me.listBox1.EndUpdate()

[C#]
this.listBox1.BeginUpdate();
this.listBox1.EndUpdate();

※サンプルプログラムを作ったら BeginUpdate() をコメントアウトして高速化していないバージョンと処理時間を比較して見ると面白いですよ。
フォームの作成
Form4 を作成して ListBox,Button を貼り付けてください。

ListBox:[listBox1]
Button:[Button1]
VB[Form4.vb]
Public Class Form4

    
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        
Handles button1.Click

        
Try
            ' リストボックス更新開始
            Me.listBox1.BeginUpdate()

            
' アイテム追加
            For i As Integer = 0 To 10000
                
Me.listBox1.Items.Insert(0, String.Format("アイテム:{0:00000}", i))
            
Next

        Finally
            ' リストボックス更新終わり
            Me.listBox1.EndUpdate()
        
End Try

    End Sub
End
 Class
C#[Form4.cs]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace ListBox_CS
{
    
public partial class Form4 : Form
    {
        
public Form4()
        {
            InitializeComponent();
        }

        
private void button1_Click(object sender, EventArgs e)
        {
            
try
            {
                
// リストボックス更新開始
                this.listBox1.BeginUpdate();

                
// アイテム追加
                for (int i = 0; i <= 10000; i++)
                    
this.listBox1.Items.Insert(0, string.Format("アイテム:{0:00000}", i));

            }
            
finally
            {
                
// リストボックス更新終わり
                this.listBox1.EndUpdate();
            }
        }
    }
}
※このページで紹介しているサンプルコードについて管理者は動作保障をいたしません※
※サンプルコードを使用する場合は、自己責任でお願いします※

【楽天 ランキング:スマートフォン】




このサイトはフリーソフトのMerge HTMLで作成されています。
このサイトはリンクフリーです。

ページの先頭に戻る Copyright© 2010-2015 Jun.Shiozaki All rights reserved.