2013-11-20 67 views
1

在窗體加載我更新下拉列表值 ddlFont:System.FormatException了未處理

foreach (FontFamily font in System.Drawing.FontFamily.Families) 
{ 
    ddlFont.Items.Add(font.Name); 
} 

ddlFontSize:

for (int i = 8; i < 24; i++) 
{ 
    ddlFontSize.Items.Add(i.ToString().Trim()); 
} 

ddlFontStyle:

ddlFontStyle.Items.Add(System.Drawing.FontStyle.Bold.ToString()); 
ddlFontStyle.Items.Add(System.Drawing.FontStyle.Italic.ToString()); 
ddlFontStyle.Items.Add(System.Drawing.FontStyle.Regular.ToString()); 

ddlFontColor:

ddlColor.Items.Add(System.Drawing.Color.Black.Name.ToString()); 
ddlColor.Items.Add(System.Drawing.Color.Blue.Name.ToString()); 
ddlColor.Items.Add(System.Drawing.Color.Green.Name.ToString()); 
ddlColor.Items.Add(System.Drawing.Color.Red.Name.ToString()); 
ddlColor.Items.Add(System.Drawing.Color.White.Name.ToString()); 
ddlColor.Items.Add(System.Drawing.Color.Yellow.Name.ToString()); 

如果用戶更改字體,大小,樣式,顏色,那麼我必須更改RichTextBox控制文本字體,大小,樣式,顏色。

我從下拉列表控件的SelectedIndexChanged事件中調用字體名爲ddl,字體樣式爲ddl,字體大小爲ddl的「FontFormation」方法。

private void ddlFont_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     FontFormation(); 
    } 

在我的代碼前兩個條件沒有錯誤,但最後一個被執行單獨顯示在ddlFont.Text"Input string was not in a correct format"錯誤。

public void FontFormation() 
{ 
    if (FontStyle.Bold.ToString() == ddlFontStyle.Text) 
    { 
     rchtxtMainBody.Font = new System.Drawing.Font(ddlFont.Text, Convert.ToUInt32(ddlFontSize.Text), FontStyle.Bold); 
    } 
    else if(FontStyle.Italic.ToString() == ddlFontStyle.Text) 
    { 
     rchtxtMainBody.Font = new System.Drawing.Font(ddlFont.Text, Convert.ToUInt32(ddlFontSize.Text), FontStyle.Italic); 
    } 
    else if (FontStyle.Regular.ToString() == ddlFontStyle.Text) 
    { 
     rchtxtMainBody.Font = new System.Drawing.Font(ddlFont.Text, Convert.ToUInt32(ddlFontSize.Text), FontStyle.Regular); 
    } 
} 

如果我刪除我的最後否則,如果條件即FontStyle.Regular.ToString() == ddlFontStyle.Text則越來越沒有任何錯誤執行的代碼。

+0

你的ddlFontSize.Text是什麼呢?是「12px」還是「12pt」還是「12」? – NoLifeKing

+0

having 11 12 13 –

+0

用你的DropDowns中的一些例子更新你的問題。這使調試更容易。嘗試單獨運行Convert.ToUint32,看它是否會拋出另一個異常 – NoLifeKing

回答

2

問題在於你的ddlFontSize.Text。當它無法轉換爲UInt32時發生異常。請調試您的代碼,並確保ddlFontSize.Text沒有「px」或「pt」,並且它只有一個字符串格式的數字。

+0

如您所述,ddlFontSize沒有任何「px」或「pt」。僅存在價值觀,如11 12 13 –

相關問題