[英]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.