2

C#で複雑な電卓をやっています。最初のテキスト ボックスは実部を受け入れ、2 番目のテキスト ボックスは虚部を受け入れます。マウスを使用して値を入力できるようにしたい。したがって、ボタン1をクリックすると、フォーカスがオンになっているテキストボックスの値に「1」が連結されます。どのテキストボックスがフォーカスされているか判断できません。たとえば、GotFocus を使用するなど、何人かが投稿したものを試してみましたが、うまくいきませんでした..

    private Control focusedControl;

    private void TextBox_GotFocus(object sender, EventArgs e)
    {
        focusedControl = (Control)sender;
    }


    private void button1_Click(object sender, EventArgs e)
    {
        if (focusedControl != null)
        {
            focusedControl.Focus();
            SendKeys.Send("1"); 

        }

    }
4

4 に答える 4

6
private TextBox focusedControl;

private void TextBox_GotFocus(object sender, EventArgs e)
{
    focusedControl = (TextBox)sender;
}


private void button1_Click(object sender, EventArgs e)
{
    if (focusedControl != null)
    {   

        focusedControl.Text  += "1";
    }

}

両方のテキストボックスの EventHandler として TextBox_GotFocus を使用するだけです。

于 2012-10-24T06:37:04.927 に答える
2
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 

        } 
    } 
} 
于 2012-10-24T06:41:30.670 に答える
1

インターネットでこのコードを見つけました。感想を教えてください :)

    private TextBox findFocused(Control parent)
    {
        foreach (Control ctl in parent.Controls)
        {
            if (ctl.HasChildren == true)
                return findFocused(ctl);
            else if (ctl is TextBox && ctl.Focused)
                return ctl as TextBox;
        }

        return null;
    }
// usage: if starting with the form  
TextBox txt = findFocused(this);

幸運を!

于 2012-10-24T06:40:49.293 に答える