使整个LinkLabel区域可单击
本文关键字:单击 区域 LinkLabel | 更新日期: 2023-09-27 18:29:48
我希望我的一些链接标签有BackColor填充,有点像这样:
Click here
但问题是,你不能真正有一个可以点击的填充链接标签,你只能点击文本(如果你在填充区域内点击,点击不会注册。)
因此,另一种选择是有一个内置链接标签的面板,然后为链接标签和面板控件注册Click事件,以获得可点击的按钮效果。
我们如何:
- 在面板内制作一个链接标签,让它们中的任何一个响应点击事件,而不必为两个控件注册点击事件;或:
- 有一个填充了10px的链接标签,并使链接标签完全可以点击
事实上,一个LinkLabel
可以包含多个Links
,根据您的要求(可以点击后台),我们只能对一个链接使用LinkLabel
,因为所有链接都有相同的背景区域,点击后台区域无法告诉我们点击了哪个链接。为了处理点击每个链接,我们处理事件LinkClicked
,但为了通过允许用户点击整个后台区域来改变其行为,我们必须正常处理事件Click
。如果需要,添加一些MouseEnter
和MouseLeave
处理程序来更改背景颜色。这是代码:
//Setup the link data for the LinkLabel
linkLabel1.Links.Add(new LinkLabel.Link() {Description = "StackOverflow", LinkData = "http://www.stackoverflow.com"});
linkLabel1.Text = "Stackoverflow";
linkLabel1.BackColor = Color.LightGray;
//Add 10px padding around the link text
linkLabel1.Padding = new Padding(10);
//Do this to change the Cursor to Hand pointer when mouse over the whole link
linkLabel1.Cursor = Cursors.Hand;
//Click event handler for your linkLabel1
private void linkLabel1_Click(object sender, EventArgs e) {
//Try showing the URL which the link refers
//we can use this info to, for example, visit the link
MessageBox.Show(linkLabel1.Links[0].LinkData.ToString());
}
//MouseEnter event handler to change the BackColor accordingly
private void linkLabel1_MouseEnter(object sender, EventArgs e) {
linkLabel1.BackColor = Color.Yellow;
}
//MouseLeave event handler to change the BackColor accordingly
private void linkLabel1_MouseLeave(object sender, EventArgs e){
linkLabel1.BackColor = Color.LightGray;
}
注意:通过自定义这种方式,Label
可以取代LinkLabel
,我们只需要一些合适的Font
、TextAlign
、Tag
(用于LinkData
)。。。
您可以通过使用linklabel的"Click"事件而不是使用"LinkClicked事件"来使填充的linklabel可点击。
private void linkLabel1_Click(object sender, EventArgs e)
{
//Your code here
MessageBox.Show("Clicked Me");
}