要启用右键单击禁用控件

时间:2015-09-01 18:00:49

标签: c# winforms

我有一个禁用且有价值的文本框。我想启用右键单击选项从文本框中复制禁用的值(Windows应用程序)。请帮助我这样做。

3 个答案:

答案 0 :(得分:1)

试试这个,请记住你必须添加你的contextmenustrip:

private void YourFormName_Load(object sender, EventArgs e)
{
     ContextMenu mnu = new ContextMenu();
     MenuItem mnuCopy = new MenuItem("Copy");
     mnuCopy.Click += (sen, ev) =>
     { 
         System.Windows.Forms.Clipboard.SetText(YourTextBoxName.Text);
     };
     mnu.MenuItems.AddRange(new MenuItem[] { mnuCopy });
     YourTextBoxName.ContextMenu = mnu;
}

private void YourFormName_MouseUp(object sender, MouseEventArgs e)
{
    Control ctl = this.GetChildAtPoint(e.Location);
    if (ctl != null && !ctl.Enabled && ctl.ContextMenu != null)
    ctl.ContextMenu.Show(this, e.Location);
}

答案 1 :(得分:0)

回到Vijaya的答案,我通过将带有/productmedia/na-media/media-manager-thumbnails/filer_public_thumbnails/app-images/thumbs540/__540x540_car-vent-clip-silo.jpg?v3.16.5-na /productmedia/na-media/media-manager-thumbnails/filer_public_thumbnails/app-images/thumbs540/__540x540_403720-car-vent-clip-enviro.jpg?v3.16.5-na /productmedia/na-media/media-manager-thumbnails/filer_public_thumbnails/app-images/thumbs100/__100x100_car-vent-clip-silo.jpg?v3.16.5-na 的控件放入填充和边距为零的面板控件中来解决了这个问题。因此,您可以在面板的MouseUp事件中进行操作。

答案 2 :(得分:-1)

当您单击页面中的已禁用元素时,该事件由disabled元素的父元素处理。 例如,如果您的文本框位于页面中,则页面会处理它。如果文本框位于不同的容器(如div)中,则该容器将处理鼠标单击事件。 根据您的情况,您可以在父元素上编写处理程序。 一个javascript函数,它将捕获事件,它可以为您读取值。例如,JS函数可以将disabled属性更改为false,读取值,然后再次禁用文本框。