C#winform如何实现文本编辑框(TextBox)的Hint提示文字效果

2014年04月13日 其他资源 1条评论 阅读20354次

C#的winform程序下如何实现文本编辑框(TextBox)的Hint提示文字效果

本文说的是在C#的winform程序下,如何实现文本编辑框(TextBox)的Hint提示文字效果。

之前有过手机移动APP开发经验或WEB项目开发经验的读者,应该对文本编辑框的Hint提示效果很熟悉,在这些平台上,Hint是经常被用到的,并且是很容易就能实现的。但在C#的winform程序下,貌似系统就没有给我们提供直接可利用的API来调用。

虽然系统没有提供,但不证明我们就不能实现这个效果。下面就是对C#的winform程序的TextBox实现Hint文字提示效果的代码。

 

    [DllImport("user32.dll", CharSet = CharSet.Auto)] 

    private static extern Int32 SendMessage(IntPtr hWnd, int msg, 

        int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam);

 

    public static void SetHintText(Control control, string text) 

    { 

        SendMessage(control.Handle, 0×1501, 0, text); 

    }

 

C#的winform程序的TextBox实现Hint文字提示效果的方法

很简单的几行代码,在需要对某个C#的winform程序的TextBox实现Hint文字提示效果时,只需调用上面的SetHintText方法即可,其中,第一个参数是要设置的TextBox的对象名,第二个参数不用多解释了,一看就知道了。

PS:这个代码段来源于网络,但网络上流传的版本感觉太琐碎,当然,上面贴出来的这一行代码只是针对C#的winform程序的TextBox实现Hint文字提示效果的,如果有其他的需求或许就需要另外的代码来支持了。

另外,网络上流传的代码中,设置TextBox的Hint文字提示效果的代码中,方法名字是SetCueText()的,后来经过查阅,发现SetCueText()是API中的方法名,这里我为了更容易理解,就把方法名改为SetHintText()了。

 

说完上面的功能之后,再说下我调用完这个方法出现的问题。

C#的winform程序下让控件失去焦点的问题

问题出现的背景:

我的winform画面中,有三个TextBox,其他只有第一个TextBox是需要Hint文字提示效果的,其他两个都不需要,除了刚才说的三个TextBox外,还有两个按钮。

问题出现的症状:

在进入这个winform画面时,由于默认焦点就在第一个TextBox上,所以是看不到添加的Hint文字提示效果的。必须在第一个TextBox中不输入任何东西,并且点击另外两个TextBox的之一时,才能看到第一个TextBox的Hint文字提示。这显示不是我们想要的效果。

问题出现的原因:

原因很简单,画面显示后,焦点被置于了第一个TextBox上,所以Hint文字肯定就是看不见的了。

问题解决的方案:

想要解决掉这个问题,第一想到的就是把焦点移走,也就是让第一个TextBox失去焦点。要使第一个TextBox失去焦点方法就很多了,最初我在form_Load事件中把焦点强制给了下面的其中一个按钮,但运行起来还是没起效。后来经过调查发现,其实是C#下winform中各控件的tabindex顺序问题。于是把第一个TextBox的tabindex设置的数字大一些,并且把要赋予焦点的按钮的tabindex设置为0(一个最小的数)。这样再运行,问题就得以解决了。

本文到此结束。写程序虽易,改八阿哥不易,改一个多两个,且改且珍惜。

分享本文至:

WRITTEN BY

avatar
本文标签:C#winformHint
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

1 条评论

  1. avatar 専門店

    主な取り扱い商品:ブランドコピー時計
    主な取り扱いブランド:
    ロレックスブランドコピー,パネライブランドコピー,ウブロブランドコピー,
    ブライトリングブランドコピー,IWCブランドコピー,フランクミュラーブランドコピー,
    カルティエブランドコピー,ベル&ロスブランドコピー,オメガブランドコピー,ショパールブランドコピー,
    フェラーリブランドコピー,グラハムブランドコピー,ハリー ウィンストンブランドコピー,アランシルベスタインブランドコピー,
    ポルシェブランドコピー,ドゥ・ヴィットブランドコピー,ポールピコブランドコピー,
    ボーム&メルシエブランドコピー,エルメスブランドコピー,コルムブランドコピー,パテックフィリップブランドコピー,
    ヴァシュロンコンスタンタンブランドコピー,モンブランブランドコピー,オーデマピゲブランドコピー,ブルカリブランドコピー品を扱っております。
    他にも各種ブランドのブランドコピー品多数、取り扱っております。
    弊店は低価格で品質のいい商品をお客様にご提供いたします。
    弊店では信用第一主義を徹底しており社員全員下記の方針のもとに頑張っています。
    1.不適合品を入荷しない。
    厳しく受け入れ検査を行い、お客様に満足いただける品質のいい物だけを入荷する。
    2.不適合品を出荷しない。
    出荷前に細部まで二重確認を行い、お客様からご注文頂いた商品を納期通り出荷する。
    3.お客様からのクレームゼロ
    お客様第一主義を徹底し、お客様からのお問い合わせ、苦情等に対して積極的かつ丁寧に対応いたします。
    専門店 http://www.gooshop001.com

欢迎留言




用户登录

sitemap