|
2007/12/17(Mon) 22:58:53 編集(投稿者) 2007/12/17(Mon) 22:50:08 編集(投稿者)
8回目の投稿です。
はじめまして、ID非公開と申します。 横槍失礼いたします。 私にわかる範囲でお答えいたします。
手元の文献によると、 1.プロパティのSetアクセサ内にMe.Invalidate()を記述し、 2.OnPaint()内に描画処理を書けばOK とのことです。
ためしに書いてみたコードです。VB2005で動作確認いたしました。 何かの参考になれば幸いです。
[追記]既にInvalidateを試されているとのことなので、 もしかすると的外れな回答かもしれませんが、ご了承下さい。
Imports System.ComponentModel
Public Class InvalidateTest01 Inherits Control
Private m_rect() As Integer = {0, 0, 50, 50} <Description("円のBoundsを指定"), Category("動作テスト")> _ Public Property EclipseBounds() As Integer() Get Return m_rect End Get Set(ByVal value As Integer()) If value.Length <> 4 Then MessageBox.Show("要素数は4つにしてください", "エラー") Return End If m_rect = value Me.Invalidate() End Set End Property Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) Dim r As New Rectangle(m_rect(0), m_rect(1), m_rect(2), m_rect(3)) e.Graphics.FillEllipse(Brushes.Brown, r) MyBase.OnPaint(e) End Sub
End Class
参考文献
日経BPソフトプレス発行「プログラミングVisualBasic.NET Vol.2活用編」、pp. 195
以上、横槍失礼いたしました。
以上です。
|