我在gridview中有一个 Web窗体 文本框,我想在点击按钮时突出显示该文本。 textbox.select(start,end)
不起作用。这是代码:
Dim row As GridViewRow = TryCast(DirectCast(sender, ImageButton).Parent.Parent, GridViewRow)
Dim txtdays As TextBox = row.Cells(2).FindControl("txtDays")
Dim lbldays As Label = row.Cells(2).FindControl("lblDays")
Dim btndel As ImageButton = row.Cells(2).FindControl("btndel")
Dim imgbttnadd As ImageButton = row.Cells(2).FindControl("imgbttnadd")
//Show textbox and set its text.
txtdays.Visible = True
txtdays.Text = lbldays.Text
txtdays.Focus()
//Here is where I want to select the text.
txtdays.Select() //???????? Doesn't work.
你是怎么做到的?
.Select
适用于Windows窗体文本框,但不适用于Web窗体文本框。
答案 0 :(得分:3)
您需要了解将需要客户端脚本来执行您想要的效果。但是,需要服务器端代码来准确识别元素。这就是为什么你需要txtDays
TextBox的“渲染ID”(因为它位于GridView中,渲染的ID将是不同的)
使用JavaScript,您可以按照以下方式执行此操作:
例如,以下代码将位于您的ASPX页面中(您可能希望将其包装在函数中)。我假设您已基本熟悉JavaScript。
var txtDays = document.getElementById(<%= txtDays.ClientID %>);
if (txtDays != null)
{
txtDays.focus();
txtDays.select();
}
您在VB中查找的Select
函数不存在。由于Focus API的实现,Focus()
函数仅存在(.NET 2.0+),它在客户端代码中呈现类似于上述示例的JavaScript函数。
编辑:(评论后)
在这种情况下,我猜你可以使用类似下面的内容而不是不起作用的行(在你的代码示例中)。
txtDays.Attributes.Add("onfocus", "this.select();")
这应该确保在引发onfocus
事件时,也会选择TextBox。
答案 1 :(得分:0)
根据您的评论,您可能希望在问题中指明您正在处理ASP.NET控件。 Chris给出的答案确实适用于WinForms文本框。
我不确定你是如何在ASP.NET中做的,但我敢打赌你不能在服务器端代码中做到这一点。你可能不得不使用JavaScript来实现它。