2010-09-20 5 views
1

private void delete_Click (expéditeur d'objet, EventArgs e) { convertedText.Text = ""; }C# question de programme

private void copy_Click(object sender, EventArgs e) 
{ 
    if (convertedText.Text != "") 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
    else... what to put here? 
} 

Le programme comporte deux boutons (copier et supprimer) et une zone de texte. Si je clique sur le bouton 'Copier', il copie le texte de convertedText.Text sans aucun problème. Le bouton "Supprimer" efface également la zone de texte.

Mais s'il n'y a rien dans la zone de texte, le bouton « copier » tente encore de le copier qui est à l'origine d'un comportement inattendu.

Alors, quel code dois-je ajouter à la déclaration else ...? Ce que je veux, c'est que si la zone de texte n'a rien, alors l'opération du presse-papiers ne sera pas utilisée. Comment faire ça?

Merci d'avance!

Répondre

6

Ne pas ajouter une clause else, juste avoir le if par lui-même, par exemple

private void copy_Click(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(convertedText.Text)) 
    { 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
    } 
} 

Aussi, est-il une raison pour laquelle vous copiez la zone de texte texte dans le presse-papiers, puis en utilisant le texte de presse-papiers pour mettre à jour le texte de zone de texte? À moins que je me manque quelque chose, cela ne devrait avoir aucun effet sur la zone de texte, de sorte que le code peut être plus simple:

private void copy_Click(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(convertedText.Text)) 
     Clipboard.SetText(convertedText.Text); 
} 
+2

Je suppose qu'il est parce qu'il testait pour voir si cela a fonctionné. – Blam

2

Votre erreur provient du fait que vous manque des parenthèses là:

if (convertedText.Text != "") 
{ 
    Clipboard.SetText(convertedText.Text); 
    convertedText.Text = Clipboard.GetText(); 
} 

Seule la première ligne après une instruction if est considérée comme faisant partie de ce qui est exécuté en fonction de l'évaluation du cas où vous omettez des parenthèses.

0

Vous pouvez également revenir si la zone de texte n'a pas de valeur ...

private void copy_Click(object sender, EventArgs e) 
{ 
    if (convertedText.Text.Equals("")) 
    return; 

    Clipboard.SetText(convertedText.Text); 
    convertedText.Text = Clipboard.GetText();   
} 
+0

'convertedText.Text.Equals ("")' est mauvais. Beaucoup mieux est 'String.IsNullOeEmpty (convertedText.Text)' – abatishchev

+0

Est-ce un problème lié performance? – Matt

0

peut-être vous êtes crochets manquants { et }

if (convertedText.Text != ""){ 
     Clipboard.SetText(convertedText.Text); 
     convertedText.Text = Clipboard.GetText(); 
} 
    else 
+0

Suggestion correcte mais pas une raison d'exception – abatishchev

-2

Essayez de mettre

try 
{ 
    string foo = "bar" + 42; 
} 
catch 
{ 
    throw; 
}