半角全角转换

 1 class controlIme
 2     {
 3         //声明一些API函数
 4         [DllImport("imm32.dll")]
 5         public static extern IntPtr ImmGetContext(IntPtr Hwnd);
 6         [DllImport("imm32.dll")]
 7         public static extern bool ImmGetOpenStatus(IntPtr Himc);
 8         [DllImport("imm32.dll")]
 9         public static extern bool ImmSetOpenStatus(IntPtr Himc, bool b1);
10         [DllImport("imm32.dll")]
11         public static extern bool ImmGetConversionStatus(IntPtr Himc, ref int lp, ref int lp2);
12         [DllImport("imm32.dll")]
13         public static extern int ImmSimulateHotKey(IntPtr Hwnd, int lnHotkey);
14         public const int IME_CMODE_FULLSHAPE = 0x8;
15         public const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
16 
17         public static void SetIme(Control ctl)
18         {
19             ChangeControl(ctl);
20         }
21 
22         private static void ChangeControl(Control ctl)
23         {
24             //在控件的Click事件中触发来调整输入法状态
25             ctl.Click += new EventHandler(ctl_Click);
26         }
27 
28         //控件的Click处理程序
29         public static void ctl_Click(object sender, EventArgs e)
30         {
31             ChangeControlIState(sender);
32         }
33         private static void ChangeControlIState(object sender)
34         {
35             Control ctl = (Control)sender;
36             ChangeControlIState(ctl.Handle);
37         }
38 
39         //检查输入法的全角半角状态
40         public static void ChangeControlIState(IntPtr h)
41         {
42             IntPtr HIme = ImmGetContext(h);
43             if (ImmGetOpenStatus(HIme))  //如果输入法处于打开状态
44             {
45                 int iMode = 0;
46                 int iSentence = 0;
47                 bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);  //检索输入法信息
48                 if (bSuccess)
49                 {
50                     if ((iMode & IME_CMODE_FULLSHAPE) > 0)   //如果是全角
51                     {
52                         iMode &= (~IME_CMODE_FULLSHAPE);
53                         ImmSimulateHotKey(h, IME_CHOTKEY_SHAPE_TOGGLE);    //转换成半角
54                     }
55                     else
56                     {
57                         ImmSimulateHotKey(h, IME_CHOTKEY_SHAPE_TOGGLE);    //转换成全角
58                     }
59                 }
60             }
61         }
62     }

下面是窗体代码:

 1  public partial class Form1 : Form
 2     {
 3         public Form1()
 4         {
 5             InitializeComponent();
 6         }
 7         #region 加载窗体时,焦点默认处于TextBox1上
 8         private void Form1_Load(object sender, EventArgs e)
 9         {
10             textBox1.Focus();
11         }
12         #endregion
13 
14         #region 全角与半角互相切换
15         private void button1_Click(object sender, EventArgs e)
16         {
17             bool flag = false;
18             textBox1.Focus();
19             controlIme.SetIme(textBox1);
20             controlIme.ctl_Click(textBox1, e);
21             textBox1.Focus();
22             if (button1.Text == "半角")
23             {
24                 button1.Text = "全角";
25                 flag = true;
26             }
27             if (flag == false)
28             {
29                 if (button1.Text == "全角")
30                 {
31                     button1.Text = "半角";
32                 }
33             }
34         }
35         #endregion
36     }

效果图:

转载于:https://www.cnblogs.com/ziranquliu/p/4722661.html

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值