2010-05-30 5 views
3

J'ai deux zones de texte et un bouton. Lorsque j'appuie sur le bouton, je veux savoir où se trouve mon curseur actuel (l'une des deux cases). J'ai besoin de cela pour savoir où insérer un certain texte. J'ai essayé textbox1.Focused; textbox1.enabled mais aucun n'a fonctionné. Comment devrais-je l'implémenter? MerciRécupère la zone de texte actuellement ciblée en C#

+0

WPF ou Winforms? – mmr

+0

Désolé, c'est Winforms – ashokgelal

+0

s'il vous plaît voir: Comment vous retournez le focus au dernier contrôle utilisé après avoir cliqué sur un bouton dans une application winform? http://stackoverflow.com/questions/37317/how-do-you-return-the-focus-to-the-last-used-control-after-clicking-a-button-in-a –

Répondre

13

Gardez à l'esprit que lorsque vous cliquez sur le bouton, vos zones de texte n'auront plus le focus. Vous aurez besoin d'une méthode de suivi de ce qui était au point avant l'événement de clic du bouton.

Essayez quelque chose comme ça

public partial class Form1 : Form 
{ 
    private TextBox focusedTextbox = null; 

    public Form1() 
    { 
     InitializeComponent(); 
     foreach (TextBox tb in this.Controls.OfType<TextBox>()) 
     { 
      tb.Enter += textBox_Enter; 
     } 
    } 

    void textBox_Enter(object sender, EventArgs e) 
    { 
     focusedTextbox = (TextBox)sender; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (focusedTextbox != null) 
     { 
      // put something in textbox 
      focusedTextbox.Text = DateTime.Now.ToString(); 
     } 
    } 
} 
+0

Merci! Je dois Textbox.GotFocus au lieu de Textbox.Enter – ashokgelal

+0

Comme @ cod3-monk-3y dit.J'ai changé pour Gotfocus event.Thank vous deux.Il fonctionne vraiment :) –

+0

Merci.Très complète réponse, fonctionne parfaitement! – Mxsky

1

Il y a une façon très simple de le faire. Votre exigence est simple puisque vous avez seulement deux zones de texte.

Vous pouvez affecter une variable de chaîne à toute la classe qui est valide lorsque textbox1_GotFocus() est appelée ainsi que textbox2_GotFocus(). Donc, si ce textbox GotFocus() est appelé, vous affectez une valeur. Ensuite, mettez une condition pour la variable de chaîne à l'échelle de la classe dans le bouton que si la variable à l'échelle de la classe a une valeur de type, cette zone de texte est peuplée tout ce que vous voulez mettre dans la zone de texte.

Cela a fonctionné pour moi, donc je crois que cela devrait marcher sur vous.

Questions connexes