繁体   English   中英

如何在.NET / C#MouseOver方法中放入什么以在PictureBox上显示工具提示?

[英]What do I put in my .NET/C# MouseOver method to show a tooltip over a PictureBox?

下午好,

我是面向对象编程,.NET和C#的新手。 我正在研究前面提到的这些主题,并且目前正在做一个相对简单的编程任务,结果证明毕竟不是那么简单,至少对我来说仍然如此。

我想创建一个Windows窗体应用程序,其中包含一个充满国家标志(.png,128px x 128px)的窗体。 在Form_OnLoad()中,读取文件并将标志存储在PictureBox对象的数组中,并设置几个对象属性。 然后将表格整齐地填充到8个标志的行中。 到现在为止还挺好。

问题:

我想向每个PictureBox附加一个MouseOver事件处理程序,该事件处理程序生成带有特定标志的国家/地区名称的ToolTip。 在事件处理程序中,我不知道在自己已经设法完成之后要放置什么代码。 具体来说,我想使用MouseOver事件处理程序方法中的标志来处理数组,但是从那里看不到它。 我只是被困在这里,尽管我的直觉告诉我我离目标不远,但此刻我决定放弃距离终点线几米的我。 请问有人会帮助我吗?

这是我已经得到的:

using System;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

namespace WorldFlags 
{
    public partial class FormWorldFlags :Form {

        public FormWorldFlags() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            int col = 0, row = 0;
            string imageDirectory = @"D:\Documents\Visual Studio 2017\Projects\ITvitae\WorldFlags\flags\";
            string[] imageFileList = Directory.GetFiles(imageDirectory);
            PictureBox[] countryFlag = new PictureBox[imageFileList.Length];
            for (int i = 0; i < imageFileList.Length; i++) {
                countryFlag[i] = new PictureBox();
                countryFlag[i].Name = Path.GetFileNameWithoutExtension(imageFileList[i]);
                countryFlag[i].Image = Image.FromFile(imageFileList[i]);
                countryFlag[i].Location = new Point(col * 128 + 1, row * 128 + 1);
                countryFlag[i].Size = new Size(128, 128);
                countryFlag[i].MouseHover += FormWorldFlags_MouseHover;
                if (col + 1 == 8) {
                    row++;
                    col = 0;
                } else
                    col++;
                Controls.Add(countryFlag[i]);
            }
        }

        private void FormWorldFlags_MouseHover(object sender, EventArgs e) {
            ToolTip countryName = new ToolTip();
            countryName.SetToolTip(?????)
        }
    }
};

非常感谢。

乔里·范德·海登

将您的处理程序更改为以下内容:

private void FormWorldFlags_MouseHover(object sender, EventArgs e) {
    ToolTip countryName = new ToolTip();
    countryName.SetToolTip(sender, "country name");
}

如果要访问处理程序中的数组,可以将其移出表单加载函数。 或者,可以在加载图像时使用Tag属性,并在处理程序中访问该值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM