![](/img/trans.png)
[英]handling the exception as System.OutOfMemoryException without try-catch
[英]system exception using try-catch
所以我有一個例外的問題。 我正在制作一個劊子手游戲,用戶需要輸入一個字母(帶有猜測的框),但我只希望他們可以輸入來自 AZ 的字母而不是數字。
在我編寫的代碼中,我將帶有猜測名稱的框命名為choosed_lettre
並將其轉換為“字母”。
問題:
- 我怎樣才能例外它只需要字母而不是數字?
代碼:
private void Choosed_lettre_KeyDown_1(object sender, KeyEventArgs e)
{
char letter = ' ';
bool validation = false;
if (e.Key == Key.Enter && choosed_lettre.Text != "")
{
do
{
try //trycatch
{
string input = Convert.ToString(choosed_lettre.Text);
input = input.ToLower();
letter = Convert.ToChar(input[0]);
validation = true;
}
catch (SystemException)
{
choosed_lettre.Text = "";
return;
}
} while (validation == false && !((letter >= 'a' && letter <= 'z') && (letter >= 0 && letter <= 9)));
}
wpfscreen :
旁注:使用string.IsNullOrEmpty(choosed_lettre.Text)
而不是與空字符串進行比較。
string input = Convert.ToString(choosed_lettre.Text);
是不必要的,因為Text
porerty 已經是一個字符串。 使用string input = choosed_lettre.Text;
另外,避免程序員可以處理的異常。 因此,檢查input
的長度是否為 1 並且是字母。 更好的是,您可以使用出色的方法TryParse
:這樣做將大大簡化代碼:
if (e.Key == Key.Enter)
{
if(! char.TryParse(choosed_lettre.Text, out char letter))
choosed_lettre.Text = "";
if(! char.IsLetter(letter))
choosed_lettre.Text = "";
}
歡迎來到 SO!
如果您改用TextInput
處理程序會更好:
public MainWindow()
{
InitializeComponent();
this.TextInput += MainWindow_TextInput;
}
private void MainWindow_TextInput(object sender, TextCompositionEventArgs e)
{
var isLetter = Char.IsLetter(e.Text, 0);
// do something here
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.