Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-在运行时编辑选项卡页的文本属性_C#_Edit_Tabcontrol_Tabpage - Fatal编程技术网

C#-在运行时编辑选项卡页的文本属性

C#-在运行时编辑选项卡页的文本属性,c#,edit,tabcontrol,tabpage,C#,Edit,Tabcontrol,Tabpage,我有一个选项卡控件,我可以添加新的选项卡页面,在文本框中键入每个选项卡的名称。我想做的是能够右键单击一个选项卡并重命名它(允许我编辑文本),就像许多其他应用程序中的选项一样。。。我已经有一个“删除选项卡”选项,并且正在运行,但是我找不到重命名所选选项卡的方法 非常感谢您的帮助 这是我的删除选项代码,如果有任何帮助 public Form1() { InitializeComponent(); ContextMenu cm = new ContextMenu

我有一个选项卡控件,我可以添加新的选项卡页面,在文本框中键入每个选项卡的名称。我想做的是能够右键单击一个选项卡并重命名它(允许我编辑文本),就像许多其他应用程序中的选项一样。。。我已经有一个“删除选项卡”选项,并且正在运行,但是我找不到重命名所选选项卡的方法

非常感谢您的帮助

这是我的删除选项代码,如果有任何帮助

public Form1()
    {
        InitializeComponent();
        ContextMenu cm = new ContextMenu();
        cm.MenuItems.Add("Remove", new EventHandler(rmv_click));
        cm.MenuItems.Add("Rename");
        tabControl1.ContextMenu = cm;


    }
//select tab on right mouse click
        private void tabControl_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                for (int i = 0; i < this.tabControl1.TabCount; ++i)
                {
                    if (this.tabControl1.GetTabRect(i).Contains(new Point(e.X, e.Y)))
                    {
                        this.tabControl1.SelectedIndex = i;
                        break;
                    }
                }
            }
        }

//remove selected tab
    private void rmv_click(object sender, System.EventArgs e)
    {
        tabControl1.TabPages.Remove(tabControl1.SelectedTab);
    }
public Form1()
{
初始化组件();
ContextMenu cm=新建ContextMenu();
添加(“删除”,新事件处理程序(rmv_单击));
cm.MenuItems.Add(“重命名”);
tabControl1.ContextMenu=cm;
}
//用鼠标右键单击“选择”选项卡
私有无效选项卡控件\u MouseDown(对象发送方,MouseEventArgs e)
{
if(e.Button==MouseButtons.Right)
{
for(int i=0;i
你可以这样做:(又快又脏)

public Form1()
{
初始化组件();
ContextMenu cm=新建ContextMenu();
添加(“删除”,新事件处理程序(rmv_单击));
添加(“重命名”,新事件处理程序(重命名\单击));
tabControl1.ContextMenu=cm;
}
//用鼠标右键单击“选择”选项卡
私有无效选项卡控件\u MouseDown(对象发送方,MouseEventArgs e)
{
if(e.Button==MouseButtons.Right)
{
for(int i=0;i{prompt.Close();};
提示.控件.添加(确认);
prompt.Controls.Add(textlab);
prompt.Controls.Add(文本框);
prompt.ShowDialog();
返回textBox.Text;
}

Bas Brekelmans的ShowDialog方法积分。可以找到原始名称

谢谢你的回答,很好:)但实际上我正在寻找一种不打开新窗口直接编辑名称的解决方案。无论如何,我将使用您的解决方案继续使用其他函数,当我有时间时,我将对此进行更深入的研究。
 public Form1()
        {
            InitializeComponent();
            ContextMenu cm = new ContextMenu();
            cm.MenuItems.Add("Remove", new EventHandler(rmv_click));
            cm.MenuItems.Add("Rename", new EventHandler(rename_click));
            tabControl1.ContextMenu = cm;
        }

        //select tab on right mouse click
        private void tabControl_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                for (int i = 0; i < this.tabControl1.TabCount; ++i)
                {
                    if (this.tabControl1.GetTabRect(i).Contains(new Point(e.X, e.Y)))
                    {
                        this.tabControl1.SelectedIndex = i;
                        break;
                    }
                }
            }
        }

        //remove selected tab
        private void rmv_click(object sender, System.EventArgs e)
        {
            tabControl1.TabPages.Remove(tabControl1.SelectedTab);
        }

        //rename selected tab
        private void rename_click(object sender, System.EventArgs e)
        {
            var showDialog = this.ShowDialog("Tab Name", "Rename the selected tab");
            tabControl1.SelectedTab.Text = showDialog;
        }

        public string ShowDialog(string text, string caption)
        {
            Form prompt = new Form();
            prompt.Width = 500;
            prompt.Height = 150;
            prompt.Text = caption;
            Label textLabel = new Label() { Left = 50, Top = 20, Text = text };
            TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
            Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70 };
            confirmation.Click += (sender, e) => { prompt.Close(); };
            prompt.Controls.Add(confirmation);
            prompt.Controls.Add(textLabel);
            prompt.Controls.Add(textBox);
            prompt.ShowDialog();
            return textBox.Text;
        }