在.NET中突出显示文本,.Select()不可用

时间:2009-06-04 15:54:16

标签: asp.net vb.net visual-studio

我在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窗体文本框。

2 个答案:

答案 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来实现它。