C# WinForm TextBox 作为密码输入框时,如何禁止密码查看器获取密码 ?

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }



        private void button1_Click(object sender, EventArgs e)

        {

            myTextBox1.CheckPass = myTextBox1.Handle.ToInt32() * 2;

            String strText = myTextBox1.Text;

            myTextBox1.CheckPass = 0;

            MessageBox.Show(strText);

        }

    }



    public class MyTextBox : TextBox

    {

        private Int32 _CheckPass;



        public Int32 CheckPass

        {

            get

            {

                return _CheckPass;

            }

            set

            {

                _CheckPass = value;

            }

        }



        protected override void WndProc(ref Message m)

        {

            if (m.Msg == 0x000D)

            {

                if (CheckPass != m.HWnd.ToInt32() * 2)

                {

                    return;

                }

            }



            base.WndProc(ref m);

        }

    }

}

在屏蔽WM_GETTEXT前加一个算法判断
应该是可以的,不过获取前后都要更新设置,麻烦,应该还能优化点
或者还有更好的方法

参考:http://bbs.csdn.net/topics/390087189

你可能感兴趣的:(WinForm)