我正在为串行密钥注册编写代码。 如果用户输入的序列密钥是正确的,则必须打开其他表格,并且必须关闭当前表格。
请考虑代码。
namespace ExtTrigger
{
public partial class Activation : Form
{
public Activation()
{
InitializeComponent();
}
private void ActivateButton_Click(object sender, EventArgs e)
{
String key;
key = string.Concat(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text);
if (key == "1234123412341234")
{
Properties.Settings.Default.Registered = true;
MessageBox.Show("hurray", "", MessageBoxButtons.OK);
Form1 f1= new Form1();
f1.ShowDialog();
this.Close();
}
else
MessageBox.Show("No Match", "", MessageBoxButtons.OK);
}
private void Activation_Load(object sender, EventArgs e)
{
}
}
我的问题是:点击ActivateBotton后,Form1会打开但当前表单不会关闭。
我已经在几个线程中读过,在VB中我们可以更改属性:ShutdownMode。 我们怎样才能在c#中做到这一点?
答案 0 :(得分:1)
f1.ShowDialog();
阻止了通话,在新表单关闭之前,它不会转到下一行。
选项是使用:
f1.Show();
Show
没有阻止调用,它会传递给下一个语句。它不会等待新表格关闭。
答案 1 :(得分:0)
因为您已将第二个表单显示为f1.ShowDialog()
所以第一个表单保持打开状态,第二个表单关闭,请尝试此操作
Form1 f1= new Form1();
f1.Show();
this.Close();
答案 2 :(得分:0)
以下代码可以解决这个问题:
using(Form1 f1 = new Form1())
{
this.Hide();
DialogResult result = f1.ShowDialog();
if(result == DialogResult.OK)
{
this.Show();
}
}
您在使用块中创建新表单,然后隐藏主表单(或您当前所在的表单)创建一个由新打开的表单设置并打开此表单的DialogResult。现在,您可以在新表单中设置要检查的结果,如果新表单中的所有内容都很顺利,则可以通过以下方式将DialogResult设置为OK:
this.DialogResult = DialogResult.OK;
现在回到我们的第一个表单中,检查DialogResult,如果可以,则再次显示主表单。如果不行,你可以重新打开第二个表格,让用户再试一次。
答案 3 :(得分:0)
打开新表单非常简单,但您的表现方式实际上取决于您的需求。
案例1:我想冻结/阻止二级表格电话上的通话表格
在这种情况下,您应该使用
secondaryFormObj.ShowDialog();
当然,当使用这种技术时,你现在充当对话框的被叫形式应该"返回"关闭时其来电父母的答案。 例如:
private void SecondaryForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Just a dummy code example.
// Always returns Yes result on form closure
this.DialogResult = System.Windows.Forms.DialogResult.Yes;
}
有关此方式的更多帮助和示例,您可以使用MSDN: DialogResult - MSDN
案例2:我希望两个表单同时响应
在这种情况下,您基本上需要致电
secondaryFormObj.Show();
如果您希望在二级表单调用中隐藏调用者表单,只需 调用this.Hide();
在调用者类中调用secondaryFormObj.Show();
之后。只要来电者表单不是应用程序的主要表单,您也可以使用
this.Close();
关闭来电表单。
...请记住
始终确保您之前初始化了辅助表单对象 用
secondaryFormObj.Show();
或者secondaryFormObj.ShowDialog();
调用它new
初始化表单的方式与使用的每个典型对象相同
secondaryFormObj = new Form();
运营商。
例如:import requests url = 'https://ndber.seai.ie/pass/ber/search.aspx' payload = {'ctl00$DefaultContent$BERSearch$dfSearch$txtBERNumber':'100000000' } #the above dictionary key corresponds to the name , found using Firefox inspector in the source code. #I have tried using input ID too with no difference in outcome #enter in arbitrary number of '100000000'- expect to see 'Invalid ID Number' printed r = requests.post(url, data = payload) print(r.status_code, r.reason) print(r.text) if 'Number.'in r.text: #'Number' is an arbitrary word that happens to be in the page if a correct ID code is entered print('Valid ID Number') elif 'No results found.' in r.text: #as above, 'No results found' is in the page if an incorrect ID is entered print('Invalid ID Number') #with the aboove number entered, I would expect this line to be printed else: print('Code Failure') #this line gets printed
希望这会有所帮助。快乐的编码!