gpt4 book ai didi

c# - 使整个 LinkLabel 区域可点击

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:42 26 4
gpt4 key购买 nike

我希望我的一些链接标签具有带有 BackColor 的填充,有点像这样:

点这里

但问题是你不能真正有一个可以点击的填充链接标签,你必须只点击文本(如果你在填充区域内点击,点击不会注册。)

因此,另一种选择是在面板中包含链接标签,然后为链接标签和面板控件注册 Click 事件,以获得可点击的按钮效果。

我们如何:

  • 在面板内制作一个链接标签,让它们中的任何一个响应点击事件,而无需为两个控件注册点击事件;或者:
  • 是否有一个 LinkLabel 始终具有 10 像素的内边距,并使链接标签完全可点击?

最佳答案

其实一个LinkLabel可以包含很多个Link,为了你的要求(可以点击背景),我们不得不使用LinkLabel > 对于只有 1 个链接,因为所有链接都有相同的背景区域,点击背景区域无法告诉我们点击了哪个链接。要处理每个链接的点击,我们要处理事件 LinkClicked,但是要通过允许用户点击整个背景区域来改变它的行为,我们必须处理事件 Click 正常。如果需要,添加一些 MouseEnterMouseLeave 处理程序来更改背景色。这是代码:

//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 (for LinkData) ...

关于c# - 使整个 LinkLabel 区域可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18549482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com