c# – TabControl在运行时重命名
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – TabControl在运行时重命名,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2139字,纯文字阅读大概需要4分钟。
内容图文
我正在尝试创建简单的界面,用户可以在TabControl中重命名选项卡.问题是因为我可以通过GetTabRect方法获取制表符的位置,所以我无法将TextBox设置为制表符的位置.这是期望的效果(来自foobar):
这是我的效果:
下面我插入我的代码,我尝试产生这种效果:
private void renameToolStripMenuItem_Click(object sender, EventArgs e)
{
if (selectedTab >= 0 && selectedTab < MainTabs.TabCount)
{
Debug.WriteLine("Rename " + MainTabs.Controls[selectedTab].Text);
Debug.WriteLine(sender.ToString());
//var CurrentTab = MainTabs.TabPages[selectedTab];
//TabControl tabControl = MainTabs.Con
Rectangle rect = MainTabs.GetTabRect(selectedTab);
Point point = MainTabs.Location;
Debug.WriteLine(point.ToString() + " " + rect.ToString());
RenameBox = new TextBox();
MainTabs.GetControl(selectedTab).Controls.Add(RenameBox);
//MainTabs
RenameBox.Show();
RenameBox.SetBounds(rect.X, rect.Y, rect.Width, rect.Height);
//MainTab.Controls.Add(RenameBox);
//this.Controls.Add(RenameBox);
//components.Add(RenameBox);
//RenameBox.Location = point;
//MainTabs.SelectedTab.Controls.Add(RenameBox);
//MainTabs.GetControl(0).Controls.Add(RenameBox);
//MainTabs.SelectedTab.
RenameBox.KeyPress += textBox1_KeyPress;
//RenameBox.Show();
//RenameBox.Location = new Point(0, 0);
//RenameBox.Focus();
//RenameBox.SetBounds(.GetTabRect(selectedTab));
}
}
我应该如何更改代码以便能够在运行时重命名Tab名称?
解决方法:
GetTabRect()返回相对于选项卡控件的位置.但是您要将文本框添加到标签页,它位于标签页下方.这就是为什么你的截图看起来像这样.你不能给文本框一个负面的位置,它会被剪裁.理想情况下,您可以将其添加到选项卡控件,但TabControl显式禁止此操作.您可以做的唯一其他事情是将其添加到表单中.
您必须计算正确的位置,将tabrect映射到表格坐标.并确保它与tabcontrol重叠.删除它肯定最好用它的Leave事件完成.像这样:
private TextBox AddTextBoxToTab(TabControl tabctl, int index = -1) {
if (index < 0) index = tabctl.SelectedIndex;
var rc = tabctl.GetTabRect(index);
rc = tabctl.RectangleToScreen(rc);
rc = tabctl.Parent.RectangleToClient(rc);
var box = new TextBox();
box.Font = tabctl.Font;
box.Leave += delegate { box.Dispose(); };
box.SetBounds(rc.Left, rc.Top, rc.Width, rc.Height);
tabctl.Parent.Controls.Add(box);
box.BringToFront();
box.Focus();
return box;
}
内容总结
以上是互联网集市为您收集整理的c# – TabControl在运行时重命名全部内容,希望文章能够帮你解决c# – TabControl在运行时重命名所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。