当前位置:编程学习 > C#/ASP.NET >>

模拟软键盘,入门水平,求指教

在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();
         }
      }
   }
}
  --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
记录 一个上档键的状态,然后就是根据状态去ToLower,ToUpper

怎么记录上档键
        private void button41_Click(object sender, EventArgs e)
        {
            button1.Text = button1.Text.ToUpper();
        }
不知道写错没有 --------------------编程问答--------------------
引用 2 楼 gxingmin 的回复:
C# code?12345678910111213141516171819202122232425262728 //假设箭头按钮事件是btnUpperOrLower_Clickprivate void btnUpperOrLower_Click(object sender, EventArgs e){   Button btn=sender as Button;   in……



--------------------编程问答-------------------- 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();
         }
      }
   }
} --------------------编程问答--------------------
引用 5 楼 gxingmin 的回复:
string.Compare(c.Text,"A")>=0 && string.Compare(c.Text,"Z")<=0 ...
改成这样的比较
 //假设箭头按钮事件是btnUpperOrLower_Click
private void btnUpperOrLower_Click(object sender, EventArgs e)
{
……

谢谢,虽然还没解决,我还是很感谢的。
我前面给字母赋值都是用
 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,