我应该在.NET/C#MouseOver方法中添加什么来在PictureBox上显示工具提示?
下午好 我不熟悉面向对象编程、.NET和C。我正在研究前面提到的这些主题,目前正在做一个相对简单的编程任务,结果证明它毕竟不是那么简单,至少。。。对我来说仍然如此 我想创建一个Windows窗体应用程序,其中包含一个用国旗(.png,128px x 128px)填充的窗体。在形式_OnLoad()中,读取文件,并将标志存储在PictureBox对象数组中,并设置多个对象属性。然后将表格整齐地填写成8行。到目前为止还不错 问题: 我想在每个PictureBox上添加一个MouseOver事件处理程序,该处理程序生成带有特定标志国家名称的工具提示。在事件处理程序中,我不知道在我自己已经完成的事情之后应该放什么代码。具体地说,我想使用MouseOver事件处理程序方法中的标志来处理数组,但从那里看不到它。我只是被困在这里,虽然我的直觉告诉我,我离目标不远了,但在这一刻,我的思想决定放弃离终点线几米远的我。有人能帮我解决这个问题吗 以下是我已经得到的:我应该在.NET/C#MouseOver方法中添加什么来在PictureBox上显示工具提示?,c#,.net,event-handling,tooltip,picturebox,C#,.net,Event Handling,Tooltip,Picturebox,下午好 我不熟悉面向对象编程、.NET和C。我正在研究前面提到的这些主题,目前正在做一个相对简单的编程任务,结果证明它毕竟不是那么简单,至少。。。对我来说仍然如此 我想创建一个Windows窗体应用程序,其中包含一个用国旗(.png,128px x 128px)填充的窗体。在形式_OnLoad()中,读取文件,并将标志存储在PictureBox对象数组中,并设置多个对象属性。然后将表格整齐地填写成8行。到目前为止还不错 问题: 我想在每个PictureBox上添加一个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(?????)
}
}
};
使用系统;
使用系统图;
使用System.IO;
使用System.Windows.Forms;
命名空间世界标志
{
公共部分类FormWorldFlags:表单{
public FormWorldFlags(){
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e){
int col=0,row=0;
字符串imageDirectory=@“D:\Documents\Visual Studio 2017\Projects\ITvitae\WorldFlags\flags\”;
字符串[]imageFileList=目录.GetFiles(imageDirectory);
PictureBox[]countryFlag=新PictureBox[imageFileList.Length];
for(int i=0;i
非常感谢
Joeri van der Heijden将您的处理程序更改为以下内容:
private void FormWorldFlags_MouseHover(object sender, EventArgs e) {
ToolTip countryName = new ToolTip();
countryName.SetToolTip(sender, "country name");
}
如果要访问处理程序中的数组,可以将其移出form load函数。或者,您可以在加载图像时使用Tag属性,并访问处理程序中的值。当您只得到一个文件列表时,您将从何处获取名称并不明显。考虑<代码>((图片框)发送者)。姓名< /代码>谢谢汉斯。就这样!令人惊叹的countryName.SetToolTip((PictureBox)发件人,((PictureBox)发件人).Name);