C#textbox的readonly问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:04:32
我在做windows的计算器时遇到个问题,本来是用textbox来显示过程和答案,参考vista自带的计算器发现它的textbox是不可以进行文本编辑的(如果显示区用的是textbox的话),之后我把textbox的readonly激活了,文本编辑时不能了,但遇到一个问题,因为要从小键盘输入数字,readonly属性似乎限制了不能从键盘接受字符了。费解,不知道如何实现类似系统自带的计算机的显示效果(不能对文本区进行编辑,只能用键盘或者按钮来输入数据)。求教~
针对计算器本身功能我都已经实现,只是针对键盘输入问题
其实52xenos的这个办法我已经做过,我只是想做的完善些,让你的鼠标根本就不能选定文本框数据。如自带计算器,是否有其他类似textbox的控件实现了该功能?

定义几个变量分别接收第一个数、运算符、第二个数就可以了,然后把这几个变量的值赋给textbox即可

readonly是只读属性,改了不能进行任何写操作
你可以不动readonly属性,
在text的keydown里面写代码,判断keycode
如果按键不是数字或者小数点,屏蔽
否则显示
这样就不能输入其他文本了
=========
添加:
不能选定数据也可以对textbox的getfocus,textchange等属性写代码
你的要求估计没有现成的控件合你心意

这个问题最好的解决方法是使用windows消息截取。

protected override void WndProc(ref Message msg)
{
if (msg.Msg == windows键盘弹起消息)
{
}
else
{
base.WndProc(ref msg);
}
}

至于windows消息你再查下吧。