KMRT BSRN

"Hiç kimsenin ilgisine ihtiyaç duymadığın gün olgunlaşırsın. Hiç kimseden beklentiye girmediğin gün yara almazsın. Ve hiç kimseye bağımlı kalmazsan kazanırsın." OSHO

VB – Yanıp Sönen Etiket (Flashing Label) Kontrolü Oluşturma

Yorum bırakın


Bu yazımızda yanıp sönen ve kullanıcının ilgilini çeken bir etiket(Label) kontrolü geliştireceğiz. Projelerimde çoğu zaman böyle bir ifadeye, kullanıcının mutlaka okuması gereken, dikkat etmesi gereken yazılara ihtiyaç duyarım. Çoğu uygulamada da bu şekilde ifadeler mevcuttur. Yaygın olarak bu ifadeler uygulama içinde “Kalın(Bold)” ve “Altı Çizili(Underline)” olarak ayarlanırlar. Ya da kırmızı olarak renklendirilirler. Fakat yaptığım projelerde karşılaştığım kadarı ile bu belirginleştirme, kullanıcıların farketmesini sağlamıyor. Ya da kullanıcıların alışkanlıklarından ötürü dikkatlerinin oraya çekilmesini sağlamıyor. Bu konuda düşünürken, bu konuda parlak bir fikir aklıma geldi. 🙂 Evettt gerçekten parlak, hatta yanıp sönen :)) Sonunda yanıp sönen bir etiket(Label) kontrolü geliştirmeye karar verdim. Sonunda nasıl birşey mi çıktı. Buyrun aşağıdadır.

HighlightLabel.vb
Public Class HighlightLabel
    Inherits Label

#Region "Initialize"

    Private components As System.ComponentModel.IContainer
    Friend WithEvents tmrRepater As System.Windows.Forms.Timer

    Public Sub New()
        Me.InitializeComponent()
    End Sub

    Private Sub InitializeComponent()
        Me.components = New System.ComponentModel.Container()
        Me.tmrRepater = New System.Windows.Forms.Timer(Me.components)
        Me.SuspendLayout()
        'tmrRepater        
        Me.tmrRepater.Interval = 5
        '        'HighlightLabel      
        Me.ResumeLayout(False)

    End Sub

#End Region

#Region "Events"

    Public Event HighlightSpeedChanged(ByVal value As Integer)

#End Region

#Region "Properties"

    Private _HighlightSpeed As Integer = 5
    ''' I??kland?rman?n h?z?n? belirler.    
    ''' (Minimum : 1 Maksimum : 50)  
    '''   
    Public Property HighlightSpeed() As Integer
        Get
            Return _HighlightSpeed
        End Get
        Set(ByVal value As Integer)

            If (value < 1) Then value = 1
            If (value > 50) Then value = 50

            _HighlightSpeed = value

            RaiseEvent HighlightSpeedChanged(value)

        End Set
    End Property

    Private _IsHighlightEnabled As Boolean = True
    Public Property IsHighlightEnabled() As Boolean
        Get
            Return _IsHighlightEnabled
        End Get
        Set(ByVal value As Boolean)
            _IsHighlightEnabled = value

            If (Not _IsHighlightEnabled) Then
                Me.StopLabelHighlight()
            End If

        End Set
    End Property

#End Region

#Region "Local Variables"

    Dim red As Integer = 0
    Dim green As Integer = 0
    Dim blue As Integer = 0
    Dim feeder As Integer = Me.HighlightSpeed

#End Region

#Region "Public Methods"

    '''
    ''' E?er IsHighlightEnabled = True ise ???kland?rmay? ba?lat?r.  
    '''     
    Public Sub StartLabelHighlight()

        If (Me.IsHighlightEnabled) Then
            Me.tmrRepater.Enabled = True
            Me.tmrRepater.Start()
        End If

    End Sub

    ''' I??kland?rmay? durdurur.      
    Public Sub StopLabelHighlight()

        Me.tmrRepater.Enabled = False
        Me.tmrRepater.Stop()

    End Sub

#End Region

#Region "Event Handlers"

    Private Sub tmrRepater_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrRepater.Tick

        If (red + feeder >= 255) Then
            feeder = (-1) * Me.HighlightSpeed
            red = 255
        ElseIf (red + feeder <= 0) Then
            feeder = (1) * Me.HighlightSpeed
            red = 0
        End If

        red += feeder

        Me.ForeColor = Color.FromArgb(red, green, blue)
    End Sub

#End Region

End Class

image Kontrolü test etmek için gerekli test formu

Form3.Designer.vb
Partial Class Form3
    Inherits System.Windows.Forms.Form

    'Form overrides dispose to clean up the component list.     
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)
        End Try
    End Sub

    'Required by the Windows Form Designer    
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Windows Form Designer    'It can be modified using the Windows Form Designer.      'Do not modify it using the code editor.     _    
    Private Sub InitializeComponent()
        Me.btnHizlandir = New System.Windows.Forms.Button()
        Me.btnYavaslat = New System.Windows.Forms.Button()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.HighlightLabel1 = New WindowsApplication1.HighlightLabel()
        Me.SuspendLayout()

        'btnHizlandir       

        Me.btnHizlandir.Location = New System.Drawing.Point(301, 97)
        Me.btnHizlandir.Name = "btnHizlandir"
        Me.btnHizlandir.Size = New System.Drawing.Size(75, 23)
        Me.btnHizlandir.TabIndex = 1
        Me.btnHizlandir.Text = "H?zland?r"
        Me.btnHizlandir.UseVisualStyleBackColor = True

        'btnYavaslat        '        
        Me.btnYavaslat.Location = New System.Drawing.Point(220, 97)
        Me.btnYavaslat.Name = "btnYavaslat"
        Me.btnYavaslat.Size = New System.Drawing.Size(75, 23)
        Me.btnYavaslat.TabIndex = 2
        Me.btnYavaslat.Text = "Yava?lat"
        Me.btnYavaslat.UseVisualStyleBackColor = True        '        
        'Label1        '        
        Me.Label1.AutoSize = True
        Me.Label1.Location = New System.Drawing.Point(166, 102)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(31, 13)
        Me.Label1.TabIndex = 3
        Me.Label1.Text = "H?z : "        '        
        'HighlightLabel1        '        
        Me.HighlightLabel1.AutoSize = True
        Me.HighlightLabel1.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(162, Byte))
        Me.HighlightLabel1.HighlightSpeed = 5
        Me.HighlightLabel1.IsHighlightEnabled = True
        Me.HighlightLabel1.Location = New System.Drawing.Point(12, 32)
        Me.HighlightLabel1.Name = "HighlightLabel1"
        Me.HighlightLabel1.Size = New System.Drawing.Size(372, 29)
        Me.HighlightLabel1.TabIndex = 0
        Me.HighlightLabel1.Text = "Bu bir yan?p s?nen uyar? etiketidir."        '        'Form3        '        
        Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
        Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
        Me.ClientSize = New System.Drawing.Size(388, 132)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.btnYavaslat)
        Me.Controls.Add(Me.btnHizlandir)
        Me.Controls.Add(Me.HighlightLabel1)
        Me.Name = "Form3"
        Me.Text = "Form3"
        Me.ResumeLayout(False)
        Me.PerformLayout()

    End Sub
    Friend WithEvents HighlightLabel1 As WindowsApplication1.HighlightLabel
    Friend WithEvents btnHizlandir As System.Windows.Forms.Button
    Friend WithEvents btnYavaslat As System.Windows.Forms.Button
    Friend WithEvents Label1 As System.Windows.Forms.Label
End Class

 

Form3.vb
Public Class Form3

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.HighlightLabel1.StartLabelHighlight()

        'Me.HighlightLabel1.StopLabelHighlight()

        'Me.HighlightLabel1.IsHighlightEnabled = True        
        'Me.HighlightLabel1.HighlightSpeed = 10

        AddHandler Me.HighlightLabel1.HighlightSpeedChanged, AddressOf HighlightLabel1_HighlightSpeedChanged

        Me.Label1.Text = "H?z : " & Me.HighlightLabel1.HighlightSpeed.ToString()

    End Sub

    Private Sub btnHizlandir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHizlandir.Click
        Me.HighlightLabel1.HighlightSpeed += 5
    End Sub

    Private Sub btnYavaslat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnYavaslat.Click
        Me.HighlightLabel1.HighlightSpeed -= 5
    End Sub

    Private Sub HighlightLabel1_HighlightSpeedChanged(ByVal value As Integer)
        Me.Label1.Text = "H?z : " & value.ToString()
    End Sub

End Class

Sonuç :

HighlightSpeed” özelliği ile hızlandırabilir ya da yavaşlatabilirsiniz..

IsHighlightEnabled” özelliği ile etkisizleştirebilirsiniz..

HighlightSpeedChanged” olayını yönetebilirsiniz..

 Resim 1Resim 1  Resim 2Resim 2
 Resim 3Resim 3

Resim 4Resim 4

 Resim 5Resim 5  
Reklamlar

Yazar: K. Murat BAŞEREN, MBA, MCP

I am a senior software developer, MCP, consultant, blogger, former chemist and software trainer. My interests range from software developer to technology. I am also interested in web development, education, and coffee.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s