2015-04-20 2 views
0

Я пытаюсь изменить размер шрифта с помощью combobox. проблема в том, что @runtime я получаю ошибку, нет никакой ценности. по форме нагрузки я устанавливаю selectedindexitem до 3Combobox to integer Value @ Runtime Для изменения FontSize

MyCode:

UPDATE: только работает, если я установить целочисленное значение с номером ... Я хочу, чтобы иметь возможность изменить его с comboboox1.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     ComboBox1.SelectedIndex = 2 
    End Sub 

    Dim myFontSize As Integer = 120 
    Dim myFont As New Font("Arial", myFontSize, FontStyle.Bold Or FontStyle.Italic) 
    Dim Loc As Point 
    Dim Pxy As Point 

    Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove 
     txtButton.Text = MouseButtons.Left 
     If e.Button = MouseButtons.Left Then 
      Loc = e.Location 
      Me.PictureBox1.Invalidate() 
     End If 
    End Sub 

    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint 


     Dim pt As Point = PictureBox1.PointToClient(Control.MousePosition) 
     e.Graphics.DrawString(txtA.Text, myFont, Brushes.Black, pt.X, pt.Y) 
    End Sub 
Private Sub ComboBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox1.KeyPress 
     Dim KeyAscii As Integer = Asc(e.KeyChar) 
     Select Case KeyAscii 
      Case 8, 27, 48 To 57, 9 
      Case Else 
       KeyAscii = 0 
     End Select 
     If KeyAscii = 0 Then 
      e.Handled = True 
     Else 
      e.Handled = False 
     End If 
    End Sub 

Может быть, не важно, но у меня есть код на Combobox_KeyPress чтобы только numbers.any помощи или точки, меня в правом dirrection?

ответ

-1

Вы должны получить FontSize от ComboBox.SelectedItem, а не от родителя. Также «FontSize» уже переменная в строках, так что вы должны назвать пользовательскую переменную что-то другое:

Dim MyFontSize As Integer = CInt(myComboBox.SelectedItem) 
Dim myFont As New Font("Arial", MyFontSize, FontStyle.Bold Or FontStyle.Italic) 
+0

Извините, но я ниспровергаю, потому что обе вещи, сказанные в вашем ответе, неверны. – ElektroStudios

+0

это не работает. :( – db35m

0

Если я понял, хорошо, проблема заключается в том, что на Вашем случае форма нагрузки он вызывает исключение, потому что не выбран в поле со списком ?.

Также, где вы пытаетесь запустить этот код ?.

В любом случае вы могли бы написать условный, чтобы гарантировать, что есть выбранный элемент, то избежать этого исключения:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) _ 
Handles ComboBox1.SelectedIndexChanged 

    Dim cb As ComboBox = DirectCast(sender, ComboBox) 

    If cb.SelectedItem IsNot Nothing Then 

     Using font As New Font("Arial", Convert.ToInt32(cb.Text), 
           FontStyle.Bold Or 
           FontStyle.Italic) 

      otherControl.Font = font 

     End Using 

    End If 

End Sub 
+0

Спасибо за ответ @ElektroStudios, но он позволяет приложению запускаться, но не имеет никаких изменений в fontsize, вот и весь код, как у меня есть, и как он работает. Я просто хочу иметь возможность связывать шрифт с ComboBox1. – db35m

0

Я получил это работает!

Dim myFontSize As Integer 
     Integer.TryParse(ComboBox1.Text, myFontSize) 
     Dim myFont As New Font("Arial", myFontSize, FontStyle.Bold Or FontStyle.Italic) 

это сделало трюк.