表单打开时允许输入设置货币的文本框

Textbox to allow input to set currency when form is open

比如字母G选择GBP,字母U选择USD等等

我试图让用户在打开表单时选择他们的货币,如下所示:

    private void Ccy_Click(object sender, EventArgs e)
    {
        baseCcy1.Visible = true;
        baseCcy1.Focus();

        CcyForm c = new CcyForm((Button)sender, MousePosition.X, MousePosition.Y, _Ccy);
        c.ShowDialog();

        setBuySellButtons();
    }

但是,文本框只有在表单关闭后才会聚焦。当 CcyForm 打开时,它不允许我在文本框中键入内容。我已经用 Task.delay 尝试了 async/await 方法,但这没有帮助。我不希望将文本框放在 CcyForm 中,而是在表单打开时可见,在未打开时不可见。

如何让用户在 CcyForm 打开时在文本框中输入内容?提前致谢!

使用CcyForm.Show();而不是 CcyForm.ShowDialog();

你应该打电话给c.Show(this);。这将创建一个拥有的表单或无模式对话。这是一种将始终保留在其调用者面前但不会阻止对其进行访问的表单。自有表单的一个示例是 VS 查找和替换对话框。

baseCcy1.Show();

var c = new CcyForm((Button)sender, MousePosition.X, MousePosition.Y, _Ccy);

c.Show(this);
Activate();
baseCcy1.Select();