Husna Ridzuan
New member
- Joined
- Jul 10, 2011
- Messages
- 3
- Programming Experience
- Beginner
How to embed font for groupbox text?? I've embed the font and it only work for button only...I've made 3 module for 3 custom font..and embed it.. it's all work but not for groupbox text..
VB.NET:
'Import Sections.Imports System.IO 'File Manipulation Namespace
Imports System.Text 'Allows better String Manipulation
Imports System.Drawing.Text
Imports System.Runtime.InteropServices
Public Class MainForm
'Create a few variables.
Private Mistakes As Integer = 0I 'All mistakes are here.
Private PictureList As New List(Of PictureBox) 'The list of pictures!
Private LabelList As New List(Of Label) 'Each label created goes here.
Private WordList As New List(Of String) 'The wordlist is populated here.
Private CurrentWord As String = String.Empty 'The current word.
Private RandomGenerator As New Random(Date.Now.Millisecond) 'RANDOMNESS!
Private Shared PFC As Drawing.Text.PrivateFontCollection
Private Shared NewFont_FF As Drawing.FontFamily
'Capture KeyDown events.
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
Select Case e.KeyCode
Case Keys.A
If ABtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(ABtn, Button), Nothing)
Case Keys.B
If BBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(BBtn, Button), Nothing)
Case Keys.C
If CBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(CBtn, Button), Nothing)
Case Keys.D
If DBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(DBtn, Button), Nothing)
Case Keys.E
If EBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(EBtn, Button), Nothing)
Case Keys.F
If FBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(FBtn, Button), Nothing)
Case Keys.G
If GBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(GBtn, Button), Nothing)
Case Keys.H
If HBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(HBtn, Button), Nothing)
Case Keys.I
If IBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(IBtn, Button), Nothing)
Case Keys.J
If JBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(JBtn, Button), Nothing)
Case Keys.K
If KBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(KBtn, Button), Nothing)
Case Keys.L
If LBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(LBtn, Button), Nothing)
Case Keys.M
If MBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(MBtn, Button), Nothing)
Case Keys.N
If NBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(NBtn, Button), Nothing)
Case Keys.O
If OBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(OBtn, Button), Nothing)
Case Keys.P
If PBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(PBtn, Button), Nothing)
Case Keys.Q
If QBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(QBtn, Button), Nothing)
Case Keys.R
If RBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(RBtn, Button), Nothing)
Case Keys.S
If SBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(SBtn, Button), Nothing)
Case Keys.T
If TBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(TBtn, Button), Nothing)
Case Keys.U
If UBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(UBtn, Button), Nothing)
Case Keys.V
If VBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(VBtn, Button), Nothing)
Case Keys.W
If WBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(WBtn, Button), Nothing)
Case Keys.X
If XBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(XBtn, Button), Nothing)
Case Keys.Y
If YBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(YBtn, Button), Nothing)
Case Keys.Z
If ZBtn.Enabled = False Then Exit Sub
ButtonClick(DirectCast(ZBtn, Button), Nothing)
Case Keys.Space
e.Handled = True
Exit Sub
Case Keys.Enter
e.Handled = True
Exit Sub
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
End Select
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
End Sub
'Initialization.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Do Until File.Exists(My.Settings.CurrWordlist) = True
If My.Settings.InternalWordList = True Then
Exit Do
End If
Settings.ShowDialog()
Loop
PictureList.Add(HeadBox)
PictureList.Add(BodyBox)
PictureList.Add(Arm1Box)
PictureList.Add(Arm2Box)
PictureList.Add(Leg1Box)
Call LoadWordList()
Label4.Font = CustomFont.GetInstance(11, FontStyle.Regular)
GroupBox2.Font = CustomFont.GetInstance(11, FontStyle.Regular)
NewWordBtn.Font = CustomFont.GetInstance(11, FontStyle.Regular)
SettingsBtn.Font = CustomFont.GetInstance(11, FontStyle.Regular)
MistakesLbl.Font = CustomFont.GetInstance(11, FontStyle.Regular)
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
GroupBox2.Font = CustomFont.GetInstance(11, FontStyle.Regular)
Label2.Font = CustomFont3.GetInstance(22, FontStyle.Regular)
Label3.Font = CustomFont2.GetInstance(13, FontStyle.Regular)
End Sub
''' <summary>
''' Load the WordList
''' </summary>
''' <remarks></remarks>
Private Sub LoadWordList()
WordList.Clear() 'Clear the current Wordlist.
Try
If My.Settings.InternalWordList = False Then 'If we aren't using the internal wordlist
For Each item As String In File.ReadAllLines(My.Settings.CurrWordlist) 'load the wordlist
WordList.Add(item)
Next
Else
File.WriteAllText("wordlist.txt", My.Resources.Wordlist) 'Create the Wordlist from the internal one.
For Each item As String In File.ReadAllLines("wordlist.txt") 'now read it.
WordList.Add(item)
Next
File.Delete("wordlist.txt") 'delete it
End If
Call GetWord() 'get a word now!
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
''' <summary>
''' Select a Random Word from the WordList
''' </summary>
''' <remarks></remarks>
Private Sub GetWord()
'Lock the groupbox2
GroupBox2.Enabled = False
For Each btn As Button In GroupBox2.Controls
btn.Enabled = True
Next
'Reset mistakes
Mistakes = 0I
For Each p As PictureBox In PictureList
p.Visible = False
Next
'Generate a Random Integer
Dim CW As Integer = 0
CW = RandomGenerator.Next(0, WordList.Count - 1)
'Make sure we don't get a duplicate word.
'This prevents getting two words in a row.
If CurrentWord = WordList(CW) Then
Do Until CurrentWord <> WordList(CW)
CW = RandomGenerator.Next(0, WordList.Count - 1)
Loop
End If
CurrentWord = WordList(CW)
CurrWord.Text = CurrentWord
MistakesLbl.Text = String.Format("Remaining Mistakes: {0}", 5I - Mistakes)
Call GenerateLabels()
Call ApplySymbols()
End Sub
''' <summary>
''' Create the Dynamic Labels.
''' </summary>
''' <remarks></remarks>
Private Sub GenerateLabels()
If LabelList.Count > 0 Then 'Clear the list and remove each from the control
For Each item As Label In LabelList
GroupBox1.Controls.Remove(item)
Next
LabelList.Clear()
End If
'Create the initial point values.
Dim xVal As Integer = 40I
Dim yVal As Integer = 60I
Dim d As Integer = 0I 'label count.
For Each c As Char In CurrentWord 'Now setup a For Loop.
Dim x As New Label 'Create a new Label.
If xVal >= 351I Then 'Reset the xVal if >= 351I
xVal = 6I
yVal += 27I 'Set the yVal to the next row.
End If
x.Location = New Point(xVal, yVal) 'Create new Point.
x.Name = d.ToString & "_lbl" 'Set the name
x.Text = "__" 'Set the text
x.Visible = True 'Make it visible.
x.AutoSize = True 'Autosize it
x.BackColor = Color.Transparent 'Set the backColor to transparent.
LabelList.Add(x) 'Add it to the list
GroupBox1.Controls.Add(x) 'Add to controls.
x.BringToFront() 'Bring it to front.
GroupBox1.Refresh() 'refresh it.
xVal += 15 'move it over 15 pixels
d += 1 'add to the count.
Next
GroupBox2.Enabled = True
End Sub
''' <summary>
''' Apply any special symbols to words.
''' </summary>
''' <remarks></remarks>
Private Sub ApplySymbols()
Dim x As Integer = 0I '
For Each ch As Char In CurrentWord
Select Case ch
Case " "c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = " "
Case "-"c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = "-"
Case "&"c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = "&"
Case "'"c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = "'"
Case ","c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = ","
Case "."c
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Controls(Lblname).Text = "."
End Select
x += 1
Next
End Sub
Private Sub NewWordBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewWordBtn.Click
'Make a new word.
Select Case MessageBox.Show("Are You Sure You Want To Make A New Word???", "New word?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
Case Windows.Forms.DialogResult.Yes
Call GetWord()
Case Windows.Forms.DialogResult.No
'
Case Windows.Forms.DialogResult.Cancel
'
End Select
NewWordBtn.Font = CustomFont.GetInstance(11, FontStyle.Regular)
End Sub
''' <summary>
''' All Button Click Events.
''' </summary>
''' <remarks></remarks>
Private Sub ButtonClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ABtn.Click, BBtn.Click, CBtn.Click, DBtn.Click, EBtn.Click, FBtn.Click, GBtn.Click, HBtn.Click, IBtn.Click, JBtn.Click, KBtn.Click, LBtn.Click, MBtn.Click, NBtn.Click, OBtn.Click, PBtn.Click, QBtn.Click, RBtn.Click, SBtn.Click, TBtn.Click, UBtn.Click, VBtn.Click, WBtn.Click, XBtn.Click, YBtn.Click, ZBtn.Click
Select Case DirectCast(sender, Button).Name
Case "ABtn"
ABtn.Enabled = False
Call EvaluateString("a"c)
Case "BBtn"
BBtn.Enabled = False
Call EvaluateString("b"c)
Case "CBtn"
CBtn.Enabled = False
Call EvaluateString("c"c)
Case "DBtn"
DBtn.Enabled = False
Call EvaluateString("d"c)
Case "EBtn"
EBtn.Enabled = False
Call EvaluateString("e"c)
Case "FBtn"
FBtn.Enabled = False
Call EvaluateString("f"c)
Case "GBtn"
GBtn.Enabled = False
Call EvaluateString("g"c)
Case "HBtn"
HBtn.Enabled = False
Call EvaluateString("h"c)
Case "IBtn"
IBtn.Enabled = False
Call EvaluateString("i"c)
Case "JBtn"
JBtn.Enabled = False
Call EvaluateString("j"c)
Case "KBtn"
KBtn.Enabled = False
Call EvaluateString("k"c)
Case "LBtn"
LBtn.Enabled = False
Call EvaluateString("l"c)
Case "MBtn"
MBtn.Enabled = False
Call EvaluateString("m"c)
Case "NBtn"
NBtn.Enabled = False
Call EvaluateString("n"c)
Case "OBtn"
OBtn.Enabled = False
Call EvaluateString("o"c)
Case "PBtn"
PBtn.Enabled = False
Call EvaluateString("p"c)
Case "QBtn"
QBtn.Enabled = False
Call EvaluateString("q"c)
Case "RBtn"
RBtn.Enabled = False
Call EvaluateString("r"c)
Case "SBtn"
SBtn.Enabled = False
Call EvaluateString("s"c)
Case "TBtn"
TBtn.Enabled = False
Call EvaluateString("t"c)
Case "UBtn"
UBtn.Enabled = False
Call EvaluateString("u"c)
Case "VBtn"
VBtn.Enabled = False
Call EvaluateString("v"c)
Case "WBtn"
WBtn.Enabled = False
Call EvaluateString("w"c)
Case "XBtn"
XBtn.Enabled = False
Call EvaluateString("x"c)
Case "YBtn"
YBtn.Enabled = False
Call EvaluateString("y"c)
Case "ZBtn"
ZBtn.Enabled = False
Call EvaluateString("z"c)
End Select
End Sub
''' <summary>
''' All Mistakes are calculated here.
''' </summary>
''' <remarks></remarks>
Private Sub MistakeCalculations()
PictureList(Mistakes - 1).Visible = True
MistakesLbl.Text = String.Format("Remaining Mistakes: {0}", 5I - Mistakes)
If Mistakes = 5I Then
MessageBox.Show("SorrY..You have lost this round! The word was: " & CurrentWord & "!", "Oh no! :(", MessageBoxButtons.OK, MessageBoxIcon.Information)
Mistakes = 0I
For Each p As PictureBox In PictureList
p.Visible = False
Next
Call GetWord()
Exit Sub
End If
End Sub
''' <summary>
''' Evaluate the string to see if one is missing or there.
''' </summary>
''' <param name="ch">The Character</param>
''' <remarks></remarks>
Private Sub EvaluateString(ByVal ch As Char)
Dim x As Integer = 0
Dim Success As Boolean = False
For Each c As Char In CurrentWord.ToLower
If c = ch Then
'We have the zero based position.
'So get the name from the label list.
Dim Lblname As String = LabelList(x).Name.ToString
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
'Now assign the text to the control
GroupBox1.Controls(Lblname).Text = If(x = 0, c.ToString.ToUpper, c.ToString.ToLower)
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
Success = True
End If
x += 1
Next
If Success = False Then
Mistakes += 1
Call MistakeCalculations()
End If
If WordSolved() = True Then
MessageBox.Show("YeaY!!You've Won!!")
Call GetWord()
End If
End Sub
''' <summary>
''' Is the word solved?
''' </summary>
''' <returns>Boolean for if word is solved or not.</returns>
''' <remarks></remarks>
Private Function WordSolved() As Boolean
Dim count As Integer = 0
For Each lbl As Label In GroupBox1.Controls
If lbl.Text = "__" Then
count += 1
End If
Next
If count = 0 Then Return True Else Return False
End Function
''' <summary>
''' Handles arbitrary KeyDown events.
''' </summary>
''' <remarks></remarks>
Private Sub MainKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ABtn.KeyDown, BBtn.KeyDown, CBtn.KeyDown, DBtn.KeyDown, EBtn.KeyDown, FBtn.KeyDown, GBtn.KeyDown, HBtn.KeyDown, IBtn.KeyDown, JBtn.KeyDown, KBtn.KeyDown, LBtn.KeyDown, MBtn.KeyDown, NBtn.KeyDown, OBtn.KeyDown, PBtn.KeyDown, QBtn.KeyDown, RBtn.KeyDown, SBtn.KeyDown, TBtn.KeyDown, UBtn.KeyDown, VBtn.KeyDown, WBtn.KeyDown, XBtn.KeyDown, YBtn.KeyDown, ZBtn.KeyDown
Select Case e.KeyCode
Case Keys.Enter
e.Handled = True
Exit Sub
Case Keys.Space
Exit Sub
GroupBox1.Font = CustomFont2.GetInstance(11, FontStyle.Regular)
End Select
End Sub
Private Sub Settings_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SettingsBtn.Click
Settings.ShowDialog()
Call LoadWordList()
SettingsBtn.Font = CustomFont.GetInstance(11, FontStyle.Regular)
End Sub
Private Sub GroupBox2_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox2.Enter
GroupBox2.Font = CustomFont.GetInstance(11, FontStyle.Regular)
End Sub
Private Sub MistakesLbl_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MistakesLbl.Click
MistakesLbl.Font = CustomFont.GetInstance(11, FontStyle.Regular)
End Sub
Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click
Label2.Font = CustomFont3.GetInstance(22, FontStyle.Regular)
End Sub
Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter
'load the font resource to memory and return
'the font to the label's font property
GroupBox1.Font = SetFont(My.Resources.dickvandyke, 11, FontStyle.Regular)
End Sub
Private Sub Label3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label3.Click
Label3.Font = CustomFont2.GetInstance(13, FontStyle.Regular)
End Sub
Private Sub Label4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label4.Click
Label4.Font = CustomFont.GetInstance(11, FontStyle.Regular)
End Sub
Private Sub MainForm_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
Call DisposeFonts()
End Sub
End Class