gpt4 book ai didi

c# - Tabpage控件离开

转载 作者:行者123 更新时间:2023-11-30 17:23:33 24 4
gpt4 key购买 nike

我有一个标签控件和 3 个标签页。 (C#)

如果我在选项卡 2 中,并编辑文本框值然后单击选项卡 3,我需要验证文本框中输入的内容。如果正确我应该允许切换到选项卡 3 否则应该保留在选项卡 2 中我如何做到这一点?

我目前正在处理 tabpage2 的“离开”事件,我在那里验证文本框值,如果发现无效我设置为 tabcontrol.Selectedtab = tabpage2;这确实验证但切换到新标签!我怎么能限制导航。

我是 C# 的新手,所以我可能处理了错误的事件!

相关代码如下:

private void tabpage2_Leave(object sender, EventArgs e) 
{
if (Validatetabpage2() == -1)
{
this.tabcontrol.SelectedTab =this.tabpage2;
}
}

最佳答案

虽然其他方法可能有效,但验证事件是专门为此设计的。

这是它的工作原理。 When the SelectedIndex of the tab control changes, set the focus to the newly selected page and as well as CausesValidation = true.这确保如果用户试图以任何方式离开选项卡,将调用 Validating 事件。

然后在页面特定的验证事件中进行正常验证,并在需要时取消。

您需要确保在 Form Shown 事件中设置初始选定的标签页(Form_Load 将不起作用),并连接特定于标签页的验证事件。

这是一个例子:

private void Form_Shown(object sender, System.EventArgs e)
{
// Focus on the first tab page
tabControl1.TabPages[0].Focus();
tabControl1.TabPages[0].CausesValidation = true;

tabControl1.TabPages[0].Validating += new CancelEventHandler(Page1_Validating);
tabControl1.TabPages[1].Validating += new CancelEventHandler(Page2_Validating);
}

void Page1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text == "")
{
e.Cancel = true;
}
}

void Page2_Validating(object sender, CancelEventArgs e)
{
if (checkBox1.Checked == false)
{
e.Cancel = true;
}
}

private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Whenever the current tab page changes
tabControl1.TabPages[tabControl1.SelectedIndex].Focus();
tabControl1.TabPages[tabControl1.SelectedIndex].CausesValidation = true;
}

关于c# - Tabpage控件离开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com