Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使整个链接标签区域可单击_C#_.net_Winforms - Fatal编程技术网

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)
,其中
开始
是文本中链接的开始索引,
长度
是链接的长度。链接不能相互重叠。您可以搜索更多内容并自己尝试。一个
链接标签有一个
文本
,但我们可以指定将文本的哪些部分视为单独的链接。请参考此