模拟软键盘,入门水平,求指教
在winform的环境下做一个登陆主界面,重点做小键盘这个模块这是界面。。
现在遇到一个小问题就是点击button{↑}来实现字母小写到小写之间的切换
求大神帮我给点提示 小键盘 C# --------------------编程问答-------------------- 记录 一个上档键的状态,然后就是根据状态去ToLower,ToUpper --------------------编程问答--------------------
//假设箭头按钮事件是btnUpperOrLower_Click--------------------编程问答--------------------
private void btnUpperOrLower_Click(object sender, EventArgs e)
{
Button btn=sender as Button;
int offset;
if(btn.Text=="↑")
{
offset=-32;
btn.Text="↓";
}
else
{
offset=32;
btn.Text="↑";
}
//假设你的按钮都在Panel1上
foreach(Control c in Panel1.Controls)
{
if(c is Button)
{
if((c.Text>="A" && c.Text<="Z") || (c.Text>="a" && c.Text<="z"))
{
c.Text=(C.Text[0] + offset).ToString();
}
}
}
}
怎么记录上档键
private void button41_Click(object sender, EventArgs e)
{
button1.Text = button1.Text.ToUpper();
}
不知道写错没有 --------------------编程问答--------------------
--------------------编程问答-------------------- string.Compare(c.Text,"A")>=0 && string.Compare(c.Text,"Z")<=0 ...
改成这样的比较
//假设箭头按钮事件是btnUpperOrLower_Click
private void btnUpperOrLower_Click(object sender, EventArgs e)
{
Button btn=sender as Button;
int offset;
if(btn.Text=="↑")
{
offset=-32;
btn.Text="↓";
}
else
{
offset=32;
btn.Text="↑";
}
//假设你的按钮都在Panel1上
foreach(Control c in Panel1.Controls)
{
if(c is Button)
{
if((string.Compare(c.Text,"A")>=0 && string.Compare(c.Text,"Z")<=0) || (string.Compare(c.Text,"a")>=0 && string.Compare(c.Text,"z")<=0))
{
c.Text=(C.Text[0] + offset).ToString();
}
}
}
} --------------------编程问答--------------------
谢谢,虽然还没解决,我还是很感谢的。
我前面给字母赋值都是用
this.textBox2.Text += ((Button)sender).Text;
来实现的,现在一点↑就成这样 --------------------编程问答-------------------- 楼上有高人说了,外边加个判断应该就可以了吧
if("上箭头是被按的状态")
{
this.textBox2.Text += ((Button)sender).Text.ToUpper();;
}
else
{
this.textBox2.Text += ((Button)sender).Text;
}
--------------------编程问答-------------------- 首先,把所有按钮放到一个Panel中,这样用一个事件就处理所有按钮的响应了,我这里用按钮文字的颜色表示Shift键的状态,你也可以用一个变量表示:
public Form1()
{
InitializeComponent();
foreach (Control c in panelKeyboard.Controls)
{
c.Click += c_Click;
}
}
void c_Click(object sender, EventArgs e)
{
if (sender == buttonLeftShift || sender == buttonRightShift)
{
if (buttonRightShift.ForeColor == Color.Red)
{
buttonLeftShift.ForeColor = buttonRightShift.ForeColor = SystemColors.ControlText;
foreach (Control c in panelKeyboard.Controls)
{
c.Text = c.Text.ToLower();
}
}
else
{
buttonLeftShift.ForeColor = buttonRightShift.ForeColor = Color.Red;
foreach (Control c in panelKeyboard.Controls)
{
c.Text = c.Text.ToUpper();
}
}
}
else if (sender == buttonBackspace)
{
if (textBox1.SelectionLength > 0)
{
textBox1.Paste("");
}
else if (textBox1.SelectionStart > 0)
{
textBox1.Select(textBox1.SelectionStart - 1, 1);
textBox1.Paste("");
}
}
else if (sender == buttonSpace)
{
textBox1.Paste(" ");
}
else
{
textBox1.Paste(((Button)sender).Text);
}
}
--------------------编程问答-------------------- 用这个方法吧System.Windows.Forms.SendKeys.Send(string keys) --------------------编程问答-------------------- 我以前写的是写了两个方法,再用一个字段来判断是大写状态还是小写。
不知道楼上都怎么写的,回复后,再看看~
补充:.NET技术 , .NET Framework