首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>WINFORM>winform中如何获得TextBox光标位置?
winform中如何获得TextBox光标位置?
来源: 发布时间:2008-04-20 发布人: 浏览: 人次   字体: [ ]  

winform中如何获得TextBox光标位置?第一反应是SelectionStart属性,结果发现在分方向选择内容时返回错误值,真正答案如下:

using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
namespace WindowsApplication5
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            InitializeComponent();
        }

        [DllImport(
"user32.dll")]
        
private static extern bool GetCaretPos(out Point ppt);  

        
private void Form1_Load(object sender, EventArgs e)
        
{
            
this.textBox1.Text = "jinjazz";
        }

        
private void Form1_MouseDown(object sender, MouseEventArgs e)
        
{
           Point p;
           GetCaretPos(
out p);
           
int i=this.textBox1.GetCharIndexFromPosition(p);
           
this.Text = i.ToString();

        }

    }

}

 在zswang(偶最pf的伴水)的提醒下,上面方法存在两个遗漏,zswang的补充如下:

1、当输入焦点没有在编辑框中(比如有多个输入框),这样光标的位置获取并非指定。
  当然可以考虑获取之前先Focus()一下。
2、GetCharIndexFromPosition()方法有缺陷,当光标在最后一个字符来回的时候数值不变-_-!!!得完善一下。

public virtual int GetCharIndexFromPosition(Point pt)
{
    
int lParam = NativeMethods.Util.MAKELONG(pt.X, pt.Y);
    
int n = (int) UnsafeNativeMethods.SendMessage(new HandleRef(thisbase.Handle), 0xd70, lParam); //EM_CHARFROMPOS = 0xd7
    n = NativeMethods.Util.LOWORD(n);
    
if (n < 0)
    
{
        
return 0;
    }

    
string text = this.Text;
    
if (n >= text.Length)
    
{
        n 
= Math.Max(text.Length - 10); //<<<<<<<
    }

    
return n;
}


相 关 文 章   发布商链接
·WebBrowser中html元素如何触发winfor...
·winform中DatagridView单元格动态绑...
·dataset.GetChanges()为什么不可以得...
·图解winform用户控件添加自定义图标
·winform如何保持TreeView节点展开和...
·WinForm中TextBox控件循环自动滚动示...
·asp.net中当按下回车键时响应处理按...
·winform实现类似QQ滑动面板的效果,附...
·WinForm实现渐变窗体效果代码
·winform实现的仿Msn移动提示信息窗口
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·解决winform得不到GridView控
·winform实现窗体嵌入并操作可
·winform实现的仿Msn移动提示...
·WinForm实现渐变窗体效果代码
·winform实现类似QQ滑动面板的
·asp.net中当按下回车键时响应
·WinForm中TextBox控件循环自...
·winform如何保持TreeView节点
·图解winform用户控件添加自定
·dataset.GetChanges()为什么...
·winform中DatagridView单元格
·WebBrowser中html元素如何触...
·winform中通过设置钩子监视鼠
·Winform获取弹窗消息框中的文
·WinForm实现注册热键的代码
热 门 文 章
·asp.NET实现视频播放器功能代...
·winform中DatagridView单元格...
·在.net中利用webbrowser控件...
·使用C#制做进程监视器,可查看...
·WinForm编程开发实用技巧14则
·C#的简单图片透明处理代码以...
·如何实现winform自动点击webb...
·winform实现类似QQ滑动面板的...
·winform如何保持TreeView节点...
·如何做winform启动页面?
·图解winform用户控件添加自定...
·Winform窗体之间传值的几种方...
·DataGridView控件如何实现分...
·asp.net中当按下回车键时响应...
·C#实现在Windows应用程序中支...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .