Изменить topMost во время выполнения
Я использую этот код.. теперь по умолчанию мое приложение topMost = true
Но когда я пытаюсь заставить кнопку выполнить эту функцию ниже, я получаю проблему, она отключит ее один раз. Тогда по второму клику не снова.
public void setTop()
{
if (this.TopMost == false)
{
this.TopMost = true;
}
if (this.TopMost == true)
{
this.TopMost = false;
}
Есть идеи почему? это также случалось в прошлом с настройками горячих клавиш из меню, я смог сделать это один раз, после этого это не работает:(
Изменить: я узнал, как это сделать, но не смог сделать это из другой формы с этим.
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.TopMost = true();
mainForm.Update();
}
2 ответа
public void setTop()
{
if (this.TopMost == false)
{
this.TopMost = true;
}
else // change this to else.
{
this.TopMost = false;
}
}
В вашей версии, когда true присваивается this.topmost, второй if
условие удовлетворяет. Это является причиной проблемы.
Допустим, выполнение кода начинается с false, затем сначала, если условие выполнено, изменяется на true, проверяет второе, если условие также выполнено и снова изменяется на false.
Вы не показываете свой Form
во втором примере попробуйте:
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.Show();
mainForm.TopMost = true;
mainForm.Update();
}
Также, если вы используете mainForm.Show(this);
вторая форма будет принадлежать вашему Parent Form
и будет сверху автоматически.
private void button1_Click(object sender, EventArgs e)
{
pwn4g3 mainForm = new pwn4g3();
mainForm.Show(this);
}
Но лично, если бы я хотел переключить свойство Topmost, я бы использовал свою переменную Form в качестве переменной уровня класса и сделал бы что-то подобное.
public partial class Form1 : Form
{
pwn4g3 mainForm = new pwn4g3();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if(mainForm.IsDisposed ) //Check that Form hasn't been destroyed
mainForm = new pwn4g3();
if(!mainForm.Visible) //Make sure it is visible
mainForm.Show();
mainForm.TopMost = !mainForm.TopMost;
this.BringToFront(); //To verify zorder of created form
}
}