Textbox 点击编辑效果

JS

  <script language="javascript">

  <!--

  function $(e){

       return document.getElementById(e);//封装获取函数

  }

  function edit(e){

              //parseInt

              $(e).style.display="none";

              $(e+"fm").style.display="block";

              $(e+"fm").childNodes[0].focus(); //div的子元素自动获得焦点

  }

  function hide(e){

              //parseInt

              str=$(e).childNodes[0].value;//获得文本框值

              $(e).style.display="none";

              $(e=e.replace("fm","")).style.display="block";

              $(e).innerText=str;//div赋值

  }

  -->

  </script>

CSS

  <style type="text/css">

  .show{width:150px;height:20px;}

  .hide{width:150px;height:20px;display:none;}

  </style>

Html

    <div class="formLabel" id="Name">Name:</div>

    <div class="show" id="Name" runat="server" onclick="edit(this.id)"></div>

<div class="hide" id="Namefm">

<asp:TextBox id="Name" runat="server" onBlur="hide(this.parentNode.id)" ></asp:TextBox>

</div>

组合在一起就可以看到效果了。

不过要达到MSN上的编辑效果就还差一点

当TextBox失去焦点的时候,如何在后台将数据保存到数据库。

### 设置 TextBox 控件在获得焦点时无边框 对于不同平台上的 `TextBox` 控件,在获得焦点时不显示边框可以通过不同的方法实现。 #### WPF 实现方案 在 WPF 中,可以自定义样式来移除 `TextBox` 获得焦点时的默认视觉效果。具体做法是在资源字典中定义一个新的样式,并覆盖原有的模板: ```xml <Style TargetType="TextBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBox"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ScrollViewer x:Name="PART_ContentHost"/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> ``` 为了确保当 `TextBox` 处于聚焦状态时不绘制任何额外装饰线,还需要调整触发器逻辑,禁用原有高亮行为: ```xml <Style.Triggers> <!-- 移除获取焦点后的蓝色外框 --> <Trigger Property="IsFocused" Value="True"> <Setter Property="BorderThickness" Value="0"/> </Trigger> </Style.Triggers> ``` 上述代码片段展示了如何创建一个不带焦点矩形的 `TextBox`[^1]。 #### UWP 实现方案 针对 Universal Windows Platform (UWP),同样能够通过修改控件模板的方式达到相同目的。这里的关在于编辑 `TextBox` 的默认样式并删除或隐藏与焦点有关的部分: ```xml <!-- 定义新的样式 --> <Style TargetType="TextBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TextBox"> <Grid> <ContentPresenter Content="{TemplateBinding Text}" /> </Grid> </ControlTemplate> </Setter.Value> </Setter> <!-- 关闭光标周围的指示符 --> <Setter Property="FocusVisualMargin" Value="-2,-2,0,0"/> <Setter Property="FocusVisualPrimaryThickness" Value="0"/> <Setter Property="FocusVisualSecondaryThickness" Value="0"/> </Style> ``` 这段 XML 修改了 `TextBox` 的外观表现形式,使得它即使处于激活状态下也不会显示出明显的边界线条[^4]。 #### WinForms 实现方案 Windows Forms 平台下则相对简单得多,因为可以直接利用属性设置完成需求。只需将 `BorderStyle` 属性设为 None 即可让文本框失去四周固定的边框,不过这会同时影响未选中的时候的状态。如果只想改变被点击之后的样子,则可能需要借助重载 OnGotFocus 方法来自行控制绘图过程。 ```csharp private void textBox_GotFocus(object sender, EventArgs e) { ((TextBox)sender).BorderStyle = System.Windows.Forms.BorderStyle.None; } ``` 以上就是三种主流 .NET GUI 技术栈里关于去除 `TextBox` 获取输入焦点后自动添加边框的方法介绍[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值