这个问题有很多变化,我可能会全部阅读;) 但我想这不是特别的。 当然,这不能像那样工作,因为我的Form2对象只存在于" button1_Click" ....至少我猜。 表格2应该是非模态的....但是它有很多方法...... Form1应该仍然可用。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private object frm;
public bool form2IsOpen { get; set; }
public Form1()
{
InitializeComponent();
form2IsOpen = false;
}
private void button1_Click(object sender, EventArgs e)
{
if (form2IsOpen == false)
{
Form2 frm = new Form2();
frm.Show();
form2IsOpen = true;
}
else
{
frm.Close();
}
}
}
}
答案 0 :(得分:1)
并不是 List<String> list = Arrays.asList(SENTENCE1);
String[] sorted = Stream.of(SENTENCE2)
.sorted(Comparator.comparing(s -> list.indexOf(s)))
.toArray(String[]::new);
System.out.println(Arrays.toString(sorted));
// -> [I like it, My favourite book, I put it in a shelf]
对象只存在于该方法中。如果您正在查看表单,那么显然该对象存在。它引用该对象的变量仅存在于该方法中。显而易见的解决方案是不将其分配给仅存在于该方法中的变量。所有方法中都存在哪种变量?当然是成员变量。你已经使用了一个用于旗帜,为什么不用于表格呢?
答案 1 :(得分:1)
如果您尝试做的只是打开并用一个按钮关闭表单,那么为什么不尝试这个
private void btnButton_Click(object sender, EventArgs e)
{
if(Form2.IsVisible){
Form2.Hide();
}
else{
Form2.Show();
}
}
这样它只需一个按钮即可打开和关闭表单
答案 2 :(得分:1)
除非有理由,请与Hide
和Show
一起玩,您不需要每次都创建Form
。
private void button1_Click(object sender, EventArgs e)
{
if (form2.Visible) form2.Hide();
else form2.Show();
}
答案 3 :(得分:1)
你正在重新宣布&#34; frm&#34;变量作为创建表单后超出范围的局部变量。这可以修复您在代码中尝试执行的操作。
public partial class Form1 : Form
{
private Form2 frm;
public bool form2IsOpen { get; set; }
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (form2IsOpen == false)
{
frm = new Form2();
frm.Show();
form2IsOpen = true;
}
else
{
frm.Close();
form2IsOpen = false;
}
}
}