苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 8602|回复: 14

[其他] 自定义TextBox组件

[复制链接]
发表于 2013-10-24 08:53:27 | 显示全部楼层 |阅读模式
我继承TextBoxL类,其中加个按钮,但是输入的时候,字符在按钮下面!
我想做的是类似于QQ登录密码框,TextBox里面有个按钮或者是图片。但是不能覆盖文字。本站的登录框和语音搜索框做的就非常漂亮。
C:\Documents and Settings\Administrator.LENOVO-5C6DD22D\桌面\cs\image。
至于为何做成组件,主要是TextBox的属性是我所需要。控件后访问这些属性就有点麻烦了。
希望苏飞和其他朋友能够帮下忙。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-10-24 09:02:35 | 显示全部楼层
这是样式来控制的,不需要你实现,这个直接找美工实现就行了,和TextBox无关。只要把按钮和Textbox放一个Div使用新式控制下就能实现,
 楼主| 发表于 2013-10-24 09:07:05 | 显示全部楼层
阿飞,我做的是winform的,用DIV应该不能吧?
发表于 2013-10-24 09:10:53 | 显示全部楼层
Cs啊,那你还跟我网站比较,这不是诱导吗?
呵呵
你不说单看你的文字只能想到是Bs的。因为你以为我的网站为例子来说的

你不是实现效果了吗?按钮如果在前面就控制输入点直接加几个空格,让文字向后缩进

如果在后面就控制输入的字符数,不要到达按钮位置就行了。
 楼主| 发表于 2013-10-24 09:19:47 | 显示全部楼层
呵呵,不好意思,表述有误!效果我是有了。
我之前和你想法一样,我在TEXT默认几个空格,然后想重写TextBox的Text属性,但是程序出问题了,
至于你说的字符长度控制,是不是只能输入少于等于这个长度的字符呢?
这样就和textBox的原则违背了,我不想去控制其输入的内容!
想修改其ClientSize属性发现时只读属性。
C:\Documents and Settings\Administrator.LENOVO-5C6DD22D\桌面\cs\image\openForm.jpg
 楼主| 发表于 2013-10-24 09:23:14 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Diagnostics;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;


  9. namespace ControlLibraryUserTextBox
  10. {
  11.     public partial class uTextBox :TextBox
  12.     {
  13.         public uTextBox()
  14.         {
  15.             InitializeComponent();

  16.             this.button1.Location = ButtonPoint();

  17.             this.Controls.Add(button1);
  18.         }

  19.         public uTextBox(IContainer container)
  20.         {
  21.             container.Add(this);

  22.             InitializeComponent();

  23.             this.button1.Location = ButtonPoint();

  24.             this.Controls.Add(button1);
  25.         }

  26.         private Point ButtonPoint()
  27.         {
  28.             Point p = new Point();
  29.             if (this.button1.Height != this.Height - 2)
  30.             {
  31.                 this.button1.Height = this.Height - 2;
  32.             }
  33.             //X轴位置
  34.             p.X = this.Width-button1.Width-4  ;

  35.             // 获取Y轴位置
  36.             p.Y = -1 ;
  37.             return p;

  38.         }
  39. }
  40. }
复制代码
发表于 2013-10-24 09:25:08 | 显示全部楼层
你不控制怎么会实现这样的效果呢,你在设置字符串的输入长度时自动加几个字符留出来按钮的位置就行,
重写下,设置长度的属性。

,看看按钮占几个字符就在重写属性时自动增加几个,但是限制输入的方法要去掉这几个字符,如果你不使用用户控件来实现就这个方法最方便 ,

我是想不到还有什么别的方法。
再说我感觉这个使用用户控件 最方便了,不知道你是怎么想的。
这很明显就是一个用户控件。直接重写Textbox,有点多余而且有点不适合。
 楼主| 发表于 2013-10-24 09:27:36 | 显示全部楼层
如图效果!

Winfrom查询

Winfrom查询
回复

使用道具 举报

发表于 2013-10-24 09:29:14 | 显示全部楼层

为种效果以你现在的情况必须控制长度,就是我说的重写两个地方

第一个重写设置长度的属性自动增加按钮所占字符数

第二个是验证方法自动去掉这个按钮所占的长度完事
 楼主| 发表于 2013-10-24 09:34:28 | 显示全部楼层
我做的这个组件想保持TextBox的属性不变,底层所有的验证处理都是基于TextBox属性和方法来的。
我之前做的就是控件,被驳回来了。哎我也想简单点做法,我去找找看,有没有其他方法。
不过还是谢谢你啊!如此热情。我经常来这个论坛看帖。感觉清新,有活力!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-29 02:18

© 2014-2021

快速回复 返回顶部 返回列表