首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>ASP.NET>一个可自动适应高度的TextBox,附代码
一个可自动适应高度的TextBox,附代码
来源: 发布时间:2008-04-16 发布人: 浏览: 人次   字体: [ ]  
 关于Web开发上面UI布局的问题,我上次介绍了一个可以自动适应输入内容宽度的TextBox控件,它可以解决在布局时预留控件大小和用户数入内容多少上的矛盾。但是由于那个控件被限制了只能做为单行输入使用:(,在输入大块文本时就力不从心了,那么就再做一个可自动适应高度的TextBox。

    原理和那个适应宽度的TextBox查不多,只是这个反而更加简单,因为在高度方向上增长不会破坏页面的整体布局效果(宽度上的如果在页内会挤走别的元素的),所以就不需要使用Agent TextBox来作为实际录入的容器了,直接把<TextArea>增高就行了。

    响应onpropertychange事件,同步内容和<TextArea>的高度。当然如果完全根据内容增高可能也会因为内容太多而变得难看,就设置了一个最大高度限制属性。控件效果如下:

   
最大高度为200px的AutoTextBox Demo:
最大高度为200px但初始高度为3rows的AutoTextBox Demo:
高度增长无限制的AutoTextBox Demo:
    如果控件的MaxHeight属性小于或等于0,那么增长高度无限制。

#region 附 AutoTextBox 控件源码
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace WebExcel.UI.WebControls
{
    
/// <summary>
    
/// Summary description for AutoLengthTextBox.
    
/// </summary>

    [DefaultProperty("Text"), 
        ToolboxData(
"<{0}:AutoTextArea runat=server></{0}:AutoTextArea>")]
    
public class AutoTextArea : System.Web.UI.WebControls.TextBox
    
{
        [DefaultValue(
200)]
        
public int MaxHeight
        
{
            
get
            
{
                
object obj = ViewState["MaxHeight"];
                
return obj == null ? 200 : (int)obj;
            }

            
set
            
{
                ViewState[
"MaxHeight"= value;
            }

        }


        [DefaultValue(
60)]
        
public int MinHeight
        
{
            
get
            
{
                
object obj = ViewState["MinHeight"];
                
return obj == null ? 60 : (int)obj;
            }

            
set
            
{
                ViewState[
"MinHeight"= value;
            }

        }


        
protected override void OnPreRender(EventArgs e)
        
{
            
this.Attributes["minHeight"= this.MinHeight.ToString();
            
if ( this.Height == Unit.Empty )
            
{
                
this.Height = this.MinHeight;
            }

            
else
            
{
                
this.Height = (int)Math.Max(this.MinHeight, this.Height.Value);
            }

            
base.OnPreRender (e);
        }


        
/// <summary> 
        
/// Render this control to the output parameter specified.
        
/// </summary>
        
/// <param name="output"> The HTML writer to write out to </param>

        protected override void Render(HtmlTextWriter output)
        
{
            
string strCode;
            
if ( this.MaxHeight <= 0 )
            
{
                strCode 
= "this.style.height=Math.max(this.minHeight,this.scrollHeight)+(this.offsetHeight-this.clientHeight)";
            }

            
else
            
{
                strCode 
= "this.style.height=(this.scrollHeight>200)?200:Math.max(this.minHeight,this.scrollHeight)+(this.offsetHeight-this.clientHeight)";
            }

            
base.Attributes["onpropertychange"= strCode;
            
// base.Attributes["onfocus"] = "this.height=this.height";
            if ( base.Rows == 0 )
            
{
                
base.Rows = 1;
            }

            
base.TextMode = TextBoxMode.MultiLine;
            
base.Render(output);
        }

    }

}

#endregion

相 关 文 章   发布商链接
·ASP.NET中实现单点登录思路及其代码
·图解asp.net如何用excel做报表的实例
·ASP.NET利用dot模板生成Word文档代码
·ASP.NET资源文件夹的具体介绍
·asp.net实现的截取字符串函数,保证汉...
·分析asp.net页面后台执行的流程
·如何防止asp.net盗链下载问题的实现...
·实例讲解ASP.NET上传大文件的解决方...
·asp.net文件下载显示进度条的代码
·ASP.NET实现Office文档的分类管理代...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·如何实现在DataList控件中的D...
·实例讲解asp.net生成高质量缩
·asp.net适用于IE或FireFox的...
·举例详解C#代码与javaScript...
·asp.net无刷新上传文件
·在Ie中保存图片时出现"800700...
·asp.net文件上传大小限制的控
·asp.net动态生成txt文本文件...
·asp.net实现将Excel文件导入...
·实现多列,带图片的DropDownLi...
·javascript实现TreeView 控件
·ASP.NET配置Word的操作权限
·让FileUpload控件在IE和FireF...
·ASP.NET实现Office文档的分类
·asp.net文件下载显示进度条的
热 门 文 章
·asp.net(C#)上传下载及文件管...
·图解asp.net如何用excel做报...
·asp.net无刷新上传文件
·Asp.Net防止刷新重复提交数据...
·asp.net实现将Excel文件导入...
·asp.net中Web.Config配置文件...
·ASP.NET取得物理路径和虚拟路...
·asp.net(c#)生成验证码代码,...
·asp.net页面回传与js调用服务...
·asp.net(C#版)实现登录验证码...
·DataGrid中DropDownList触发S...
·ASP.net 实现批量数据更新或...
·asp.net中DataBinder.Eval的...
·asp.net可输入的下拉框复合控...
·asp.net中常见的几种日历控件...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .