Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# 是否在Windows窗体中显示组框内已禁用按钮的工具提示?_C#_.net_Winforms_Button_Tooltip - Fatal编程技术网

C# 是否在Windows窗体中显示组框内已禁用按钮的工具提示?

C# 是否在Windows窗体中显示组框内已禁用按钮的工具提示?,c#,.net,winforms,button,tooltip,C#,.net,Winforms,Button,Tooltip,我有一个组框设置为visible true。其中有3个按钮。btn1 visible true.btn 2,btn 3 visible false。要在确切位置显示此3个按钮的工具提示吗 我现在在做什么 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syste

我有一个组框设置为visible true。其中有3个按钮。btn1 visible true.btn 2,btn 3 visible false。要在确切位置显示此3个按钮的工具提示吗

我现在在做什么

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

        private ToolTip toolTip = new ToolTip();
        private bool isShown = false;
        ToolTip toolTip1 = new ToolTip();
        bool IsShown = false;

        public Form1()
        {
            InitializeComponent();

            button1.Enabled = false;
            toolTip1.InitialDelay = 0;
        }
        private void Form1_MouseMove_1(object sender, MouseEventArgs e)
        {
            //if (button1 == this.GetChildAtPoint(e.Location))
            //{
            //    if (!isShown)
            //    {
            //        toolTip.Show("MyToolTip", this, e.Location);
            //        isShown = true;
            //    }
            //}
            //else
            //{
            //    toolTip.Hide(textBox1);
            //    isShown = false;
            //}
            Control ctrl = this.GetChildAtPoint(e.Location);

            if (ctrl != null)
            {
                if (ctrl == this.button1 && !IsShown)
                {
                    string tipstring = this.toolTip1.GetToolTip(this.button1);
                    this.toolTip1.Show(tipstring, this.button1, this.button1.Width / 2, this.button1.Height / 2);
                    IsShown = true;
                }
            }
            else
            {
                this.toolTip1.Hide(this.button1);
                IsShown = false;
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
              // Set up the delays for the ToolTip.
            toolTip1.AutoPopDelay = 5000;
            toolTip1.InitialDelay = 1000;
            toolTip1.ReshowDelay = 500;

            // Force the ToolTip text to be displayed whether or not the form is active.
            toolTip1.ShowAlways = true;

            // Set up the ToolTip text for the Button and Checkbox.
            toolTip1.SetToolTip(this.button1, "My button1");
        }
    }
}
我试过一个按钮,但失败了…需要帮助吗

我甚至试过


但它不适用于禁用的控件

,因为禁用按钮上的MouseHover事件不会触发,您可以在窗体上设置MouseMove事件并检查按钮位置,如下所示:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.X >= button.Location.X && e.X < button.Location.X + button.Width
        && e.Y >= button.Location.Y && e.Y <= button.Location.Y + button.Height)
    {
        if (!isShown)
        {
            tt.Show("MyToolTip", button, button.Width / 2, button.Height / 2);
            isShown = true;
        }

    }
    else
    {
        tt.Hide(button);
        isShown = false;
    }
}

试试这个,我想它会起作用。

因为禁用按钮上的MouseHover事件不会触发,所以您可以在窗体上设置MouseMove事件,并检查按钮位置,如下所示:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.X >= button.Location.X && e.X < button.Location.X + button.Width
        && e.Y >= button.Location.Y && e.Y <= button.Location.Y + button.Height)
    {
        if (!isShown)
        {
            tt.Show("MyToolTip", button, button.Width / 2, button.Height / 2);
            isShown = true;
        }

    }
    else
    {
        tt.Hide(button);
        isShown = false;
    }
}

试试这个,我想它会起作用。

因为禁用按钮上的MouseHover事件不会触发,所以您可以在窗体上设置MouseMove事件,并检查按钮位置,如下所示:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.X >= button.Location.X && e.X < button.Location.X + button.Width
        && e.Y >= button.Location.Y && e.Y <= button.Location.Y + button.Height)
    {
        if (!isShown)
        {
            tt.Show("MyToolTip", button, button.Width / 2, button.Height / 2);
            isShown = true;
        }

    }
    else
    {
        tt.Hide(button);
        isShown = false;
    }
}

试试这个,我想它会起作用。

因为禁用按钮上的MouseHover事件不会触发,所以您可以在窗体上设置MouseMove事件,并检查按钮位置,如下所示:

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.X >= button.Location.X && e.X < button.Location.X + button.Width
        && e.Y >= button.Location.Y && e.Y <= button.Location.Y + button.Height)
    {
        if (!isShown)
        {
            tt.Show("MyToolTip", button, button.Width / 2, button.Height / 2);
            isShown = true;
        }

    }
    else
    {
        tt.Hide(button);
        isShown = false;
    }
}


试试这个,我想它会起作用。

您希望什么时候显示工具提示?我会考虑将事件MouthHover设置为TooTip。但是我不确定我是否完全理解你想要实现的目标。我正在尝试显示一个放置在组框中的禁用控件的工具提示。你能给出一个例子并举例说明你希望何时显示工具提示吗?我会考虑将事件MouthHover设置为TooTip。但是我不确定我是否完全理解你想要实现的目标。我正在尝试显示一个放置在组框中的禁用控件的工具提示。你能给出一个例子并举例说明你希望何时显示工具提示吗?我会考虑将事件MouthHover设置为TooTip。但是我不确定我是否完全理解你想要实现的目标。我正在尝试显示一个放置在组框中的禁用控件的工具提示。你能给出一个例子并举例说明你希望何时显示工具提示吗?我会考虑将事件MouthHover设置为TooTip。但我不确定我是否完全理解你想要实现的目标。我正在尝试显示一个放置在组框中的禁用控件的工具提示。你能给出一个例子并查看上面的编辑-我添加了代码。它对我有用。如果您仍然缺少一些信息,请告诉我…可爱的家伙…它的工作原理非常完美…我忘记附加eventhandler…它是否适用于组框内的多个按钮…只是一个小问题,,,假设我的grpbox中有2个按钮..btn1已启用..btn2已禁用..我想显示以下两个u的工具提示…现在当我将鼠标第一次悬停在已启用的btn1上时..工具提示未显示..但显示的是另一个按钮..请检查一次..我猜在显示工具提示且鼠标光标未移动时会发生这种情况将其悬停-使其消失并再次调用MouseMove。我现在没有很好的解决方案,但是你可以把工具提示放在按钮边框之外。请参见上面的编辑-我添加了代码。它对我有用。如果您仍然缺少一些信息,请告诉我…可爱的家伙…它的工作原理非常完美…我忘记附加eventhandler…它是否适用于组框内的多个按钮…只是一个小问题,,,假设我的grpbox中有2个按钮..btn1已启用..btn2已禁用..我想显示以下两个u的工具提示…现在当我将鼠标第一次悬停在已启用的btn1上时..工具提示未显示..但显示的是另一个按钮..请检查一次..我猜在显示工具提示且鼠标光标未移动时会发生这种情况将其悬停-使其消失并再次调用MouseMove。我现在没有很好的解决方案,但是你可以把工具提示放在按钮边框之外。请参见上面的编辑-我添加了代码。它对我有用。如果您仍然缺少一些信息,请告诉我…可爱的家伙…它的工作原理非常完美…我忘记附加eventhandler…它是否适用于组框内的多个按钮…只是一个小问题,,,假设我的grpbox中有2个按钮..btn1已启用..btn2已禁用..我想显示以下两个u的工具提示…现在当我将鼠标第一次悬停在已启用的btn1上时..工具提示未显示..但显示的是另一个按钮..请检查一次..我猜在显示工具提示且鼠标光标未移动时会发生这种情况将其悬停-使其消失并再次调用MouseMove。我现在没有很好的解决方案,但是你可以把工具提示放在按钮边框之外。请参见上面的编辑-我添加了代码。它对我有用。如果您仍然缺少一些信息,请告诉我…可爱的家伙…它的工作原理非常完美…我忘记附加eventhandler…它是否适用于组框内的多个按钮…只是一个小问题,,,假设我的grpbox中有2个按钮..btn1已启用..btn2已禁用..我想显示以下两个u的工具提示…现在当我将鼠标第一次悬停在已启用的btn1上时..工具提示未显示..但显示的是另一个按钮..请检查一次..我猜在显示工具提示且鼠标光标未移动时会发生这种情况将其悬停-使其消失并再次调用MouseMove。我现在没有很好的解决方案,但是你可以把工具提示放在按钮边框之外。