为弹出窗口设置取消按钮
本文关键字:取消 按钮 设置 窗口 | 更新日期: 2023-09-27 18:01:21
我正在实现一个需要输入的弹出窗口。所以它包含一个OK按钮(提交按钮)和一个取消按钮。因此,当我按下OK按钮时,它接受输入值,如果我按下取消按钮,它不应该接受输入,但应该使值减少1。我将清楚地向你解释为什么。下面是弹出式表单的代码。
public partial class PopUp : Form {
public PopUp()
{
InitializeComponent();
}
private void OK_Click(object sender, EventArgs e)
{
((Scrollbar.Form1)this.Owner).OK_Click(textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text);
this.Close();
}
private void Cancel_Click(object sender, EventArgs e)
{
((Scrollbar.Form1)this.Owner).Cancel_Click();
this.Close();
}
}
和主表单中的OK_click和cancel_click函数
public void OK_Click(string tbox1, string tbox2, string tbox3, string tbox4)
{
g[b] = Int32.Parse(tbox1);
h[b] = Int32.Parse(tbox2);
i[b] = Int32.Parse(tbox3);
j[b] = Int32.Parse(tbox4);
b++;
}
public void Cancel_Click()
{
}
Form ChildForm = null;
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (a < 2)
{
ChildForm = new PopUp();
ChildForm.ShowDialog(this);
l[a] = e.X;
m[a] = e.Y;
a++;
}
}
Mouseup事件应该只发生两次,每次我按下OK按钮时,'a'的值增加1,所以当我按下取消按钮时,即使'a'增加1,在这种情况下,我只能输入一次值。所以当我按下取消按钮时a的值应该减少1。请建议我的方式,我如何才能实现鼠标向上事件只有两次,即使单击取消按钮后。提前谢谢。
您正在实现弹出对话框全部错误。基本的Form
对象具有DialogResult
属性。您应该使用它来确定MainForm中的逻辑。
首先,MyPopup:
// Set properties on your buttons either in VS Designer or programmatically
this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
// other properties
this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
// other properties
然后,在MainForm中:
// Display popup expecting a DialogResult.OK or DialogResult.Cancel
void ShowPopup ( )
{
MyPopup popup = new MyPopup ( );
if (popup.ShowDialog() == DialogResult.OK)
{
// process popup textbox text values
}
else
{
// process popup cancel action
}
}
你的弹出窗口是派生自Form,正如我所看到的。最简单的解决方案,以防止窗体关闭取消点击第一次,并作出其他的东西,如果我理解正确你的问题,是覆盖表单的OnClosing事件,像这样:
protected override void OnClosing(CancelEventArgs e)
{
// some decisional logic here
if(..condition...)
e.Cancel =true; //this will prevent the form from closing
base.OnClosing(e);
}
不要尽可能多地发明双重事件或类似的东西,因为这是混乱的第一步。
使用你使用的框架的"自然"可能性。我认为你需要重新安排你的代码来支持这一点。
如果这不是你想要的,请更好地解释。问候。