我以为我有这个,但没有。我有一个5页的tabcontrol。我有它,所以当我点击tabpage4(“库存”)空白区域时,它会向datagridview和富文本框添加内容。这仅在我单击页面本身时发生,并且在每次后续单击时都会重复。我需要知道......
- 当我点击标签而不是页面本身时,有没有办法做某事? - 我可以这样做,你只能点击一次标签,以防止重复吗?
我查看了第二个问题,但它们都禁用了整个页面 - 我需要仍然能够使用页面内的控件。
我有;
awk -F '^[^,]*,[^,]*, [[]?|]' '{print $2}'
由于
答案 0 :(得分:0)
您应该听取的正确方法是SelectedIndexChanged
:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Hey!");
}
即使您使用键盘快捷键,每次更改标签页时都会被触发,即使您使用键盘快捷键也是如此。
现在,您可以通过查看SelectedTab
属性
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("You are viewing " + tabControl1.SelectedTab.Name);
}
最后,您只想运行一次函数,因此您必须记住是否已经运行了代码。您可以创建许多变量,也可以只使用Tag
属性(可以存储您想要的任何内容):
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab.Tag == null)
{
tabControl1.SelectedTab.Tag = true; //set to true so no longer evaluates to null
MessageBox.Show("You are viewing " + tabControl1.SelectedTab.Name);
}
else
{
MessageBox.Show("Sorry, can't run twice.");
}
}
希望这有帮助!
PS:您可以在switch
:)
if
语句
答案 1 :(得分:0)
如果您想要动态地将对话框附加到标签页,您可以使用选择事件来执行此操作,通过单击选项卡并在显示标签页之前触发:
GRANT REFERENCES ON CONTRACT::[http://schemas.microsoft.com/SQL/Notifications/PostQueryNotification] TO [SqlUser];
-- for Start()
GRANT CREATE PROCEDURE to [SqlUser];
GRANT CREATE QUEUE to [SqlUser];
GRANT CREATE SERVICE to [SqlUser];
GRANT VIEW DEFINITION TO [SqlUser];
-- for subscribe
GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [SqlUser];
GRANT RECEIVE ON QueryNotificationErrorsQueue TO [SqlUser];