C# 无法将()聚焦到窗体上?
我试过:C# 无法将()聚焦到窗体上?,c#,winforms,.net-4.0,windows-8,focus,C#,Winforms,.net 4.0,Windows 8,Focus,我试过: Form myForm = new EULA(); myForm.Show(); this.WindowState = FormWindowState.Minimized; myForm.BringToFront(); myForm.Activate(); myForm.Focus(); 这段代码将它带到了最前面,但出于某种原因,我仍然必须单击表单才能获得焦点,有人能告诉我为什么吗?我有一个表单不可见,所以只有托盘图标 我只是使用: this.ShowInTaskbar = true
Form myForm = new EULA();
myForm.Show();
this.WindowState = FormWindowState.Minimized;
myForm.BringToFront();
myForm.Activate();
myForm.Focus();
这段代码将它带到了最前面,但出于某种原因,我仍然必须单击表单才能获得焦点,有人能告诉我为什么吗?我有一个表单不可见,所以只有托盘图标 我只是使用:
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
this.Activate();
按上述顺序。程序出现在前面并被激活,这意味着输入实际上会写入活动字段
这项工作:
- 当程序自动出现时
- 当用户选择托盘菜单项时
private void Form_Load(object sender, System.EventArgs e)
{
controlName.Select();
}
嗨,请按我的密码走。试着弄清楚:) 假设我们有
MainForm
和LoginForm
在我们的项目中,我们有一个静态类
,我们称之为程序
->应用程序的主要入口点。作为默认类运行我们的项目
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());
if (LoginForm._loginSuccess)
{
var m = new MainForm();
Application.Run(m);
}
else
Application.Exit();
}
public static bool UserLogin() //Add some parameter
{
//You Logic here
LoginForm._loginSuccess = true;
return LoginForm._loginSuccess;
}
}
然后假设我们成功地登录到MainForm
,那么这就是我们的MainForm
代码
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
}
public static bool _loginSuccess { get; set; }
public event EventHandler Login;
private void loginButton_Click(object sender, EventArgs e)
{
if (Program.UserLogin())
{
Close();
Dispose();
if (Application.OpenForms.Count > 0)
if (Application.OpenForms["MainForm"].Name == "MainForm")
{
Application.OpenForms["MainForm"].WindowState = FormWindowState.Normal;
Application.OpenForms["MainForm"].Enabled = true;
}
if (Login != null)
Login(this, EventArgs.Empty);
}
}
}
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void logOutButton_Click(object sender, EventArgs e)
{
//Hide();
Enabled = false;
WindowState = FormWindowState.Minimized;
var f = new LoginForm();
f.Login += loginShow;
f.Show();
f.Activate();
}
private void loginShow(object sender, EventArgs args)
{
Show();
}
}
我希望它能帮助您:)您能说明myForm是如何定义的吗?为什么最小化?很可能您遇到了相同的问题,就像您需要当前表单等待myForm
一样,然后您可以使用myForm.ShowDialog()
,它应该将表单放在前面,并将焦点放在表单上,直到它关闭。您是否尝试过将焦点设置为表单上的控件?@holtavolt它正在最小化自身,并创建一个新表单,专注于它,而不是专注于自己。programmer93这是我第一次使用的,但是我需要原始表单来运行一些代码,而另一个表单有焦点,所以我不能这样做。罗恩,我会尽快尝试,我要关注的是我主要身体的一个孩子,我需要最小化,这是不可能的。如果它实际上是一个子窗口(它是如何成为一个窗口的?),那么最小化父窗口也会使子窗口消失。我想我说错了,我说的子窗口是指它属于我的主窗体,因为当我的主窗体是时,我试图关注的窗体并没有最小化。谢谢,这比我所寻找的还要好