C# 使整个链接标签区域可单击
我希望我的一些链接标签有一个背景色的填充,有点像这样:C# 使整个链接标签区域可单击,c#,.net,winforms,C#,.net,Winforms,我希望我的一些链接标签有一个背景色的填充,有点像这样: 单击此处 但问题是,你不能真正拥有一个可以点击的填充链接标签,你只能点击文本(如果你在填充区域内点击,点击不会注册) 因此,另一种选择是让一个面板内有linklabel,然后为linklabel和Panel控件注册单击事件,以获得可单击的按钮效果 我们如何能够: 在面板内制作一个链接标签,让其中一个响应click event\u,而无需为两个控件注册click event;或: 有一个10像素填充的链接标签,并使链接标签完全可点击 事实上
单击此处
但问题是,你不能真正拥有一个可以点击的填充链接标签,你只能点击文本(如果你在填充区域内点击,点击不会注册)
因此,另一种选择是让一个面板内有linklabel,然后为linklabel和Panel控件注册单击事件,以获得可单击的按钮效果
我们如何能够:
- 在面板内制作一个链接标签,让其中一个响应click event\u,而无需为两个控件注册click event;或:
- 有一个10像素填充的链接标签,并使链接标签完全可点击
链接标签
可以包含许多链接
,根据您的要求(可以点击背景),我们只能对一个链接使用链接标签
,因为所有链接都有相同的背景区域,点击背景区域无法告诉我们点击了哪个链接。要处理每个链接上的点击,我们处理事件LinkClicked
,但要通过允许用户点击整个背景区域来改变其行为,我们必须像正常情况一样处理事件点击。如果需要,添加一些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;
}
注意:通过定制这种方式,标签可以取代链接标签
,我们只需要一些合适的字体
,文本对齐
,标签
(用于链接数据
)…事实上,链接标签
可以包含许多链接
,以满足您的需求(可以点击背景),我们只能对1个链接使用LinkLabel
,因为所有链接都有相同的背景区域,点击背景区域无法告诉我们点击了哪个链接。要处理点击每个链接,我们处理事件LinkClicked
,但允许用户点击整个背景区域来改变其行为,我们必须像平常一样处理事件单击
。添加一些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;
}
注意:通过定制这种方式,标签可以取代链接标签
,我们只需要一些合适的字体
,文本对齐
,标签
(对于链接数据
)…您可以通过使用链接标签的“单击”事件而不是使用“链接点击事件”
您可以通过使用linklabel的“Click”事件而不是使用“LinkClicked事件”使填充的linklabel可单击
什么?!这是有文件记录的吗?我从来没有在文档中看到过。当你说“一个链接标签可以包含许多链接”时,我觉得我是一百年来第一次走出这个领域“@jAsOn yes,请查看LinkLabel
的Links
属性。它包含许多LinkLabel.Link
,其中有一个类似LinkLabel.Link的构造函数(int start、int length、object linkData)
,其中开始
是文本中链接的开始索引,长度
是链接的长度。链接不能相互重叠。您可以搜索更多内容并自己尝试。一个链接标签有一个文本
,但我们可以指定将文本的哪些部分视为单独的链接。请参考以下内容:第一次?!这有记录吗?我从来没有在文档中看到过。当你说“一个链接标签可以包含许多链接”时,我觉得我是一百年来第一次走出这个世界@jAsOn yes,请查看LinkLabel
的Links
属性。它包含许多LinkLabel.Link
,其中有一个类似LinkLabel.Link的构造函数(int start、int length、object linkData)
,其中开始
是文本中链接的开始索引,长度
是链接的长度。链接不能相互重叠。您可以搜索更多内容并自己尝试。一个链接标签有一个文本
,但我们可以指定将文本的哪些部分视为单独的链接。请参考此