注册 登录
编程论坛 C语言论坛

求助: 获取textBox中指定位置一个字符。。。

追梦人zmrghy 发布于 2022-12-12 23:55, 1165 次点击
求助: 获取textBox中指定位置一个字符。。。

没有办法了,textBox无法限制光标始终在字符串最后。
只能通过判断,光标位置和光标处字符来判断是否可以输入了。。。。

获取textBox中指定位置一个字符, 不知道textBox控件有没有现成的函数可以使用。

如果没有现成的函数,自己如何写才能最简洁。。。
9 回复
#2
吹水佬2022-12-13 08:09
定位字符 -- 选择字符 -- 读取字符,过程有点复杂。
当字符串看待不可以吗,何必把问题复杂化。
#3
apull2022-12-13 08:53
C#代码,不管文本框光标在何处,始终输入到末尾。
程序代码:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    textBox1.Text = textBox1.Text + e.KeyChar;
    e.KeyChar = (char)0;
}
#4
追梦人zmrghy2022-12-13 12:54
回复 3楼 apull
也是一个思路。。。


E0135    类 "System::String" 没有成员 "charAt"   

只有本站会员才能查看附件,请 登录
#5
追梦人zmrghy2022-12-13 13:28
回复 3楼 apull
程序代码:
private: wchar_t rechar(String^Str, int _pos)
{
        const wchar_t* pchar = (const wchar_t*)(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(Str)).ToPointer();
        wchar_t retuchar = pchar[_pos];

        return retuchar;
}


这样可以吗???
有什么错误吗。
函数退去时 pchar 指针会自动释放内存吗。
#6
追梦人zmrghy2022-12-13 13:36
回复 3楼 apull
始终输入到末尾,可以这样。
程序代码:
private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e)
{
    textBox1->Select(textBox1->Text->Length, 0);

    ......................
    ......................   
}


输入前,把光标移到最后。。。。
这样,移动了的光标又被移回去了,就没有“插入”输入了。。。。。

[此贴子已经被作者于2022-12-13 13:39编辑过]

#7
吹水佬2022-12-13 18:38
以下是引用追梦人zmrghy在2022-12-13 13:36:39的发言:

输入前,把光标移到最后。。。。
这样,移动了的光标又被移回去了,就没有“插入”输入了。。。。。

事出反常,必有另类。
#8
追梦人zmrghy2022-12-14 13:14
回复 2楼 吹水佬
定位字符 -- 选择字符 -- 读取字符,过程有点复杂。
当字符串看待不可以吗,何必把问题复杂化。

一点也不复杂。。。
C#
中有  this.textBox1.Text.charAt(0, int _pos) 现成的函数

C++/CLR中没找现在函数,自己写一个也很简单

private: wchar_t rechar(String^Str, int _pos)
{
    pin_ptr<const wchar_t> wch = PtrToStringChars(Str);
    return wch[_pos];
}
#9
吹水佬2022-12-14 15:17
以下是引用追梦人zmrghy在2022-12-14 13:14:09的发言:

定位字符 -- 选择字符 -- 读取字符,过程有点复杂。
当字符串看待不可以吗,何必把问题复杂化。

一点也不复杂。。。
C#
中有  this.textBox1.Text.charAt(0, int _pos) 现成的函数

C++/CLR中没找现在函数,自己写一个也很简单

private: wchar_t rechar(String^Str, int _pos)
{
    pin_ptr<const wchar_t> wch = PtrToStringChars(Str);
    return wch[_pos];
}

不就是用字符串方法来处理吗,当然是有大把现成的货用。
textbox本来就是一个文本控件,处理的就是字符串数据。用字符串方法来处理,肯定就不会出现另类。
#10
追梦人zmrghy2022-12-14 16:35
以下是引用吹水佬在2022-12-13 08:09:22的发言:

定位字符 -- 选择字符 -- 读取字符,过程有点复杂。
当字符串看待不可以吗,何必把问题复杂化。




事物本来很简单,人心让事物变复杂
1