Why do I get FormatException
48 Replies
public partial class MainWindow : Window
{
public string Text { get; set; }
public bool isVisible { get; set; }
public string Guess { get; set; }
private int randomNumber;
public MainWindow()
{
InitializeComponent();
DataContext = this;
isVisible = false;
Guess = string.Empty;
Random myNumber = new Random();
int randomNumber = myNumber.Next(1, 10);
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
Debug.Write(randomNumber);
try
{
int guessNum = int.Parse(Guess);
if (guessNum == randomNumber)
{
Text = "You win";
isVisible = true;
}
else
{
Text = string.Empty;
isVisible = false;
}
}
catch (FormatException)
{
MessageBox.Show("invalid format please enter a number");
}
}
}
}
Here is the markup:
<WrapPanel>
<TextBlock Text="Number: " FontSize="25"></TextBlock>
<TextBox Text="{Binding Guess}" Width="140" TextChanged="TextBox_TextChanged"></TextBox>
</WrapPanel>
<WrapPanel Margin="0, 10, 0, 0">
<TextBlock Text ="{Binding Text}" Visibility="{Binding isVisible}" Width="150" FontSize="25"></TextBlock>
</WrapPanel>
$code
To post C# code type the following:
```cs
// code here
```
Get an example by typing
$codegif in chat
For longer snippets, use: https://paste.mod.gg/Avoid using Parse but prefer TryParse
$tryparse
When you don't know if a string is actually a number when handling user input, use
int.TryParse (or variants, e.g. double.TryParse)
TryParse returns a bool, where true indicates successful parsing.
Remarks:
- Avoid int.Parse if you do not know if the value parsed is definitely a number.
- Avoid Convert.ToInt32 entirely, this is an older method and Parse should be preferred where you know the string can be parsed.
Read more hereBu arada Random.Shared.Next kullanmanı öneririm
Her seferinde Random nesnesi oluşturmana gerek kalmaz
did it problem is probably Guess isn't a string or i dunno
if (int.TryParse(Guess, out int guessNum))
{
Debug.WriteLine(guessNum);
}
else
{
MessageBox.Show("Couldn't parse");
}
it goes the else path
Guess string mi ?
int.TryParse()'ın ilk parametresi string alıyor diye biliyorum
TextBox texti bindladım
string olması gerekmiyor mu
TextBox, TextBox'tır
TextBox.Text, string
<TextBox Text="{Binding Guess}" Width="140" TextChanged="TextBox_TextChanged"></TextBox>
WPF unutmasaydım iyiydi be
Guessi yanlış mı bindladım diyorum da public string Guess { get; set; } yapmışım
anlamadım
Bakıyorum şimdi 1 dk
@naber top denemedim ama
Bu kısım böyle
Buton da böyle
buton yok
xd
çalışıyor olması lazım
bakayım
synclemeye çalışıyorum öğrenim diye
Denedim çalışıyor
butonla yapınca bende de oldu
textboxtaki inputu gerçek zamanlı nası kontrol ederim
IPropertyChanged kullanman lazım
Text="{Binding Guess, UpdateSourceTrigger=PropertyChanged}"
şöyle mi
yoksa
methodda mı
bakayım 1 dk
yaptımda
bunu ekleyince düzeldi ama zaten bindlar çalışmıyormuş
baya zorlandım lan
if (guessNum == randomNumber)
{
Debug.WriteLine("You win");
Text = "You win";
isVisible = true;
}
bu kısım şöyle
textBlock'u değiştiremiyorum şimdi buraları hallettim galiba
if (guessNum == randomNumber)
{
Debug.WriteLine("You win");
Text = "You win";
isVisible = true;
}
buraya kadar atıyo
ama Text ve isVisible hiçbir işe yaramıyo
Bu kod neyin içinde çalışıyor?
textchanged methodu
Bir de şöyle bir şey var
int.TryParse kısmını loopa alman lazım
2 kere yanlış girerse gene çalışmaz
Başka bir methoda refactor et
niye ki her yazı girdiğinde bu event handler çalışmıyor mu
ya da sildiğimde

Parse edemezse else'e düşüyor
ama bu sefer guessNum ne?
he anladım
yukarı atamıyor muyuz c++taki gibi
elsein içinde
goto mu?
öyle bir şeydi galiba
c++ çok bilmiyorum
pointerı yukarı çekiyordu
ben de reverse yaptığım kadarıyla hatırlıyorum
goto ile de olur ama do while daha iyi ya
okey öyle yapayım
TryParse'ı başka bir methoda çekicem dimi
diğerini değil
win condition olanı
Sadece TryParse'ı
bunu yaptığımda yine o method bir şey returnleyecek yine boşa düşmeyecek mi guessNum?
eğer parselayamazsa
Evet başa dönecek
Dönmesi lazım zaten
he tamam tamam
ben if'te takılı kaldım
do whilela çözeriz onu
neyse ben kaçtım yarın bakarım
okey görüşürüz