Jag fick hjälp med en if-sats för ett tag sedan, men jag har kommit på att den måste modifieras, och jag är inte f-n till att räkna ut hur jag skall göra. Två små frågor: Nånting i stil med följande borde fungera : Benni,Problem med if-sats.
I en textruta så får det skrivas in max två tecken.
Det första tecknet måste vara C,D,E,F,G,A eller H.
Om det skrivs in ett tecken till, så kan det bara vara #.
Så här ser min if-sats ut idag.
<code>
if ((e.KeyChar>='A' && e.KeyChar<='H' && e.KeyChar!='B') || e.KeyChar=='#'||(e.KeyChar>='a' && e.KeyChar<='h' && e.KeyChar!='b')||e.KeyChar==(char)8)
</code>
Någon som får en ide om hur jag kan lösa detta?Sv: Problem med if-sats.
1. Kan du inte göra detta i en nästlad ifsats. Det är förmodligen MYCKET lättare.
2. Skall man inte kunna skriva 'b' också?
/mickeSv: Problem med if-sats.
<code>
if (textBox1.Text.Length==0)
{
if ((e.KeyChar>='A' && e.KeyChar<='H' && e.KeyChar!='B') || (e.KeyChar>='a' && e.KeyChar<='h' && e.KeyChar!='b'))
{
// Giltiga tecken
}
else
{
// Ogiltiga tecken
e.Handled=true;
}
}
else if (textBox1.Text.Length==1)
{
if (e.KeyChar=='#')
{
// Giltiga tecken
}
else
{
// Ogiltiga tecken
e.Handled=true;
}
}
else
// Ogiltiga tecken
e.Handled=true;
</code>Sv: Problem med if-sats.
Jag hade löst det på ett mycket snyggare sätt. Exakt hur beror lite på hur du vill använda det, så jag visar två sätt. Första sättet gör att vi enbart kollar efter giltiga tecken.
<code>
string validCharacters = "CDEFGAH#";
public bool IsValid(char s)
{
return ( this.validCharacters.IndexOf(s) >= 0 );
}
</code>
Detta gör att du kan skicka in och kolla efter giltigatecken på ett enkelt sätt. Ändras dina behov av giltiga tecken, så ändrar du bara strängen. Andra sättet är om du vill hitta giltiga tecken och kombinationer av tecken. Lättast blir att lägga de giltiga sakerna i en vektor och lägga en ArrayList kring denna.
<code>
string[] tokens = new string[] {"C", "D", "E", "F", "G", "A", "H", "C#", "D#", "E#", "F#", "G#", "A#", "H#"};
this.validTokens = new ArrayList(tokens);
public bool IsValidToken(string s)
{
return ( this.validTokens.Contains(s) );
}
</code>
Med denna typen av funktioner kommer du få enklare att lista ut giltiga tecken, än att använda massa OR baserade kontroller i if-satser.
//Andreas