C# WINFORM主窗体中点击按钮d出个子窗体,如何让子窗体前端显示,但同时主窗体可获取焦点并可 *** 作呢

C# WINFORM主窗体中点击按钮d出个子窗体,如何让子窗体前端显示,但同时主窗体可获取焦点并可 *** 作呢,第1张

你好,这个问题很简单。

        private void button1_Click(object sender, EventArgs e)

        {

            Form1 frm = new Form1();

            frmTopMost = true;    //窗体前端显示设为true

            frmShow();            //非模式对话框的形式显示

        }

基本思路是。

将子窗体以Show()的方式显示出来,而不是ShowDialog()

然后同时,将窗体的TopMost设置为true。

这个属性掌管的就是窗体是否能在前端显示。

不需要的时候设置为false即可。

谢谢采纳。

使用 InputLanguageInstalledInputLanguages 可以得到当前安装的所有输入法。

使用 InputLanguageFromCulture 可以返回指定语言对应的输入法对象(这个输入法对象可以用来设置上面的CurrentInputLanguage),比如:InputLanguageFromCulture(CultureInfoGetCultureInfo("zh-CN")) 可以返回一个中文输入法对象,而InputLanguageFromCulture(CultureInfoGetCultureInfo("en-US")) 则可以返回一个英文输入法对象。

你的A,B是两个窗体吧,或者说你的虚拟键盘是窗体类型吧

下面的方法可以使窗体不接收焦点

一。引用命名空间 using SystemRuntimeInteropServices;

二。引入API函数

[DllImport("user32dll")]

public static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);

[DllImport("user32dll")]

public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, int wndproc);

三。定义变量

public const int GWL_EXSTYLE = -20;

public const int WS_DISABLED = 0X8000000;

四。在B窗体初始化后,或者B窗体Load时

int exstyle = (int)GetWindowLong(thisHandle, GWL_EXSTYLE);

SetWindowLong(thisHandle, GWL_EXSTYLE, exstyle | WS_DISABLED);

这样就能使B窗体不接收焦点,从而A窗体也就保持了焦点

再给你个参考,别人用C#实现的屏幕键盘 (ScreenKeyboard)

>

thisAcceptButton

=

button1;

这样在WinForm窗口中,

按钮的状态会变成窗口的默认按钮,

只要按下Enter键,就会触发按钮的单击事件

这种效果与按钮获得焦点类似

当然,加个button1Focus();更好

以上就是关于C# WINFORM主窗体中点击按钮d出个子窗体,如何让子窗体前端显示,但同时主窗体可获取焦点并可 *** 作呢全部的内容,包括:C# WINFORM主窗体中点击按钮d出个子窗体,如何让子窗体前端显示,但同时主窗体可获取焦点并可 *** 作呢、C# winform中怎么实现当文本框获得焦点时,切换到中文输入法或英文输入法、winform窗体焦点问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9744035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存