首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Windows窗体中访问另一个窗体上的控件的最佳方法?

在Windows窗体中访问另一个窗体上的控件的最佳方法是通过创建一个公共属性或方法来实现。以下是一个简单的示例:

  1. 打开Visual Studio,创建一个新的Windows Forms应用程序项目。
  2. 在Form1中,添加一个Button控件和一个Label控件。
  3. 在Form2中,添加一个TextBox控件和一个Button控件。
  4. 在Form1中,创建一个公共属性,该属性将返回Form1中的Label控件的文本。
代码语言:csharp
复制
public string Form1LabelText
{
    get { return label1.Text; }
    set { label1.Text = value; }
}
  1. 在Form2中,为Button控件创建一个Click事件处理程序。在该处理程序中,访问Form1的公共属性,并将TextBox控件的文本设置为Label控件的文本。
代码语言:csharp
复制
private void button1_Click(object sender, EventArgs e)
{
    Form1 form1 = (Form1)this.Owner;
    form1.Form1LabelText = textBox1.Text;
}
  1. 在Form1中,创建一个公共方法,该方法将接受一个字符串参数,并将其设置为Label控件的文本。
代码语言:csharp
复制
public void SetLabelText(string text)
{
    label1.Text = text;
}
  1. 在Form2中,为Button控件创建一个Click事件处理程序。在该处理程序中,访问Form1的公共方法,并将TextBox控件的文本作为参数传递。
代码语言:csharp
复制
private void button1_Click(object sender, EventArgs e)
{
    Form1 form1 = (Form1)this.Owner;
    form1.SetLabelText(textBox1.Text);
}

通过这种方式,您可以在Windows窗体中访问另一个窗体上的控件,并在不同的窗体之间传递数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows 窗体事件顺序

Windows 窗体应用程序引发事件顺序非常具有吸引力。...当出现需要谨慎处理事件情况时(例如,重绘窗体某些部件时),有必要了解运行时引发事件的确切顺序。 本主题提供了应用程序和控件生存期中几个重要阶段事件顺序详细信息。...有关鼠标输入事件顺序特定详细信息,请参阅Windows 窗体鼠标事件。Windows 窗体事件概述,请参阅事件概述。 有关事件处理程序构成详细信息,请参阅事件处理程序概述。...Windows 窗体应用程序启动时,主窗体启动事件将按照以下顺序引发: Control.HandleCreated Control.BindingContextChanged Form.Load...请参阅 Windows 窗体创建事件处理程序

1.2K20

C# 子窗体调用父窗体方法(或多窗体之间方法调用)

C# 子窗体调用父窗体方法(或多窗体之间方法调用) 看似一个简单功能需求,其实很多初学者处理不好,很多朋友会这么写: C# Code: //父窗体是是frmParent,子窗体是frmChildA...//窗体打开子窗体 frmChildA child = new frmChildA(); child.MdiParent = this; child.Show(); //子窗体调父窗体方法...错强依赖!如果父窗体与子窗体同一个模块内看似没有错,因为这种反向引用在同一个模块内是可行,但程序不能这么写,你把它写死了!固化了!...假设我们项目不断扩展,需要将父窗体与子窗体分开在不同模块,这段代码就完了!因为父窗体模块必须引用子窗体模块,而子窗体需要用到frmParent类,又要引用父窗体模块!...最后,我们把IMdiParent接口部署一个Common模块内,实际frmParent与frmChildA只需要依赖Common模块。

8.1K20

代码分享:高亮显示鼠标移动到用户窗体控件

这是vbaexpress.com找到一段代码,非常有意思,当鼠标移动到用户窗体控件时,该控件会高亮显示。这可以让我们将用户窗体界面设计得更好。 示例效果如下图1所示。...图1 代码如下: '声明默认颜色 Const D_Lbl_Def_Bac As Long = 10066329 Const D_Lbl_Def_Bor As Long = 5066061 Const...D_Lbl_Def_FoCol As Long = 16579836 '声明鼠标移动到标签上时显示颜色 Const D_Lbl_Move_Bac As Long = 13750737 Const...D_Lbl_Move_Bor As Long = vbWhite Const D_Lbl_Move_FoCol As Long = 6184542 '用于标记标签颜色是否更改每个标签布尔值 Dim...移动到这里2" 标签 Dim D_Bo_Lbl_3 As Boolean ' "移动到这里3" 标签 Dim D_Bo_Lbl_4 As Boolean ' "移动到这里4" 标签 '标签 1 位置

1.1K20

VC获取窗体句柄各种方法

该函数检查与特定父窗体相联窗体z序(Z序:垂直屏幕方向,即叠放次序),并返回z序顶部窗体句柄。...返回值: 假设函数成功,返回值为Z序顶部窗体句柄。假设指定窗体无子窗体,返回值为NULL。...GetActiveWindow 函数功能:该函数能够获得与调用该方法线程消息队列相关活动窗体窗体句柄(就是取得当前进程活动窗体窗体句柄)。...GetSafeHwnd 函数功能:获取某个窗体对象(CWnd派生对象)指针句柄(HWND)时,最安全方法是使用GetSafeHwnd()函数。...这个原子(一个16bit值),必须被放置lpClassName低位字节,lpClassName高位字节置零。

1.1K20

VBA实战技巧:根据工作表数据创建用户窗体控件

一些应用场景,我们可能会需要根据工作表数据来创建用户窗体控件。例如下图1所示,工作表第3行中有一行标题数据,想要根据标题数量在用户窗体创建标签和相应文本框。...图1 按Alt+F11组合键,打开VBE,单击菜单“插入——用户窗体”,该用户窗体中放置一个框架控件,如下图2所示。...图2 该用户窗体单击右键,选择“查看代码”命令,输入下面的代码: Private Sub UserForm_Initialize() Dim rngData As Range Dim...fmScrollBarsVertical .ScrollHeight = .InsideHeight * i / 10 End With End If End Sub 运行窗体后...例如,用户文本框输入内容后,自动输入到工作表;清空文本框内容;等等。

2.2K30

创建可维护和可测试 Windows 窗体应用程序 10 种方法(译)

用用户控件隔离你用户界面 首先,避免一个表单放置太多控件。通常,你应用程序主要形式可以分解为逻辑区域(我们可以称之为“视图”)。...如果将这些区域中每个区域控件放入它们自己容器,那么你自己生活就会变得更加轻松,而在 Windows 窗体,最简单方法是使用用户控件。...将非 UI 代码排除在后面的代码之外 Windows 窗体应用程序,你总是会在窗体背后代码中找到访问网络、数据库或文件系统代码。这严重违反了“单一责任原则”。...命令模式允许你标准化处理应用程序中所有命令所共有的每个问题方式。你命令对象将有一个 Execute 方法,该方法实际包含为该命令执行所需行为代码。...例如,你发送一条“请求帮助”消息,其中包含用户当前 UI 位置详细信息。然后另一个服务处理该消息并确保 Web 浏览器启动帮助文档正确页面。另一个例子是导航。

1.3K10

xBIM 实战04 WinForm窗体实现IFC模型加载与浏览

如果确实需要在传统 WinForm 窗体也要加载并显示BIM(.ifc格式)模型文件该如何处理呢?   ...由于WinForm与WPF技术可以互通互用,所以本文介绍一种取巧方式,WinForm窗体中加载WPF控件,WPF控件渲染BIM(.ifc格式)模型文件。具体操作步骤如下详细介绍。...添加引用后,自动添加了下列WPF基础库。 ? 四、Winform项目中添加WPF用户控件 ?...五、WinForm窗体调用WPF查看器   添加一个WinForm窗体。左侧Panel是 按钮区域,右侧Panel填充窗体剩余所有区域。 ? 打开VS工具箱,可以看到如下栏目 ?...后台逻辑:第四步骤创建了一个WPF用户控件,在此处实例化一个对象 private WinformsAccessibleControl _wpfControl; 构造函数初始化该对象并将对象添加到

1.3K30

Windows写 Python 代码最佳组合!

Windows 怎样做 Python 开发?是像大神那样使用纯文本编辑器,还是用更加完善 IDE?到底是用自带命令行工具,还是需要装新 Terminal?...然而与 Linux 或 macOS 不同, Windows 做开发总会遇到很多挑战,不论是文件编码、环境控制还是项目编译,开发过程总会有一些神奇收获。...因此如果我们 Windows 做 Python 开发,命令行工具就可以采用 MS Terminal,它能解决很大一部分包安装、环境控制等问题。...当然,使用 VS Code 时,你可能会发现其他有用扩展。请在评论中分享你发现和设置! 单击活动栏(Activity Bar)「扩展」图标可以访问和安装新扩展和主题。...所以作者看来,Visual Studio Code 是最酷通用编辑器之一,也是 Python 开发最佳候选工具。

5.1K20

C# SplitContainer 控件详细用法

使用 SplitContainer 控件,可以创建复合用户界面(通常,一个面板选择决定了另一个面板显示哪些对象)。这种排列对于显示和浏览信息非常有用。...这种排列主要是通过在窗体停靠控件实现停靠控件时,可以确定控件要紧靠父容器哪个边缘。这样,如果将 Dock 属性设置为 Right,控件右边缘将停靠在它控件右边缘。...此外,控件停靠边缘大小将调整为与它容器控件大小匹配。有关 Dock 属性工作方式更多信息,请参见如何: Windows 窗体停靠控件。...SplitContainer 控件右侧面板包含另一个 SplitContainer 控件,其中 ListView 控件 RichTextBox 控件上方。...这些 SplitContainer 控件支持在窗体分别调整其他控件大小。可以改编此过程方法,制作出您自己自定义用户界面。

2.7K30

【C#】DockPanelSuite DockState.Document 状态下子窗体控件不显示解决方案

DockPanelSuite 是 Winform 优秀布局控件,但是这次使用过程却出了个问题。...然后问题来了 问题1:窗体 Load 事件中直接 Show 子窗体,关闭主窗体后再次打开,报错 创建窗口句柄时出错。 这个问题临时处理,改为不在 Load 事件默认打开子窗体。...这个问题困扰了我很久,一直找不到解决方案,后来再跟同事说起这个 bug 时候忽然就想到了。 首先,子窗体控件不显示,但是关闭子窗体后再打开,控件是正常显示。...于是我就想到,是不是要在主窗体显示完毕后再打开子窗体,就不会有这个问题了呢? 我先将显示子窗体方法,从 Load 事件中移动到 Shown 事件,结果第一个问题解决了,第二个问题依然存在。...然后我想到是,关闭主窗体时,移除子窗体。因为主窗体显示后,点击按钮打开子窗体,是没有问题,那么我就想模拟出这个流程。结果,失败了。问题依旧存在。

1.2K20

SplitContainer(拆分条控件)

使用 SplitContainer 控件,可以创建复合用户界面(通常,一个面板选择决定了另一个面板显示哪些对象)。这种排列对于显示和浏览信息非常有用。...这种排列主要是通过在窗体停靠控件实现停靠控件时,可以确定控件要紧靠父容器哪个边缘。这样,如果将 Dock 属性设置为 Right,控件右边缘将停靠在它控件右边缘。...此外,控件停靠边缘大小将调整为与它容器控件大小匹配。有关 Dock 属性工作方式更多信息,请参见如何: Windows 窗体停靠控件。...SplitContainer 控件右侧面板包含另一个 SplitContainer 控件,其中 ListView 控件 RichTextBox 控件上方。...这些 SplitContainer 控件支持在窗体分别调整其他控件大小。可以改编此过程方法,制作出您自己自定义用户界面。

2.2K20

Invoke 和 BeginInvoke 区别

Windows GUI程序消息循环 Windows程序有个消息队列,窗体所有消息是这个队列里面消息最主要来源。...这个主线程维护着整个窗体以及上面的子控件。当它得到一个消息,就会调用DispatchMessage方法派遣消息,这会引起对窗体窗口过程调用。...3、线程外操作GUI控件问题 如果从另外一个线程操作windows窗体控件,就会和主线程产生竞争,造成不可预料结果,甚至死锁。...窗体控件,那么就需要使用Invoke或者BeginInvoke方法,通过一个委托把调用封送到控件所属线程执行。...= currentThreadId);         }     } } 终于看到了,这是判断windows窗体线程和当前调用者线程是否是同一个,如果是同一个就没有必要封送了,直接访问这个GUI控件

77220

C#报错——(Winform) 某个线程创建控件不能成为另一个线程创建控件父级

问题点描述:   我新建一个线程,并在这个线程,把某个控件父级去掉或者更改,导致报这个异常 网上解析如下:   “Windows 窗体”使用单线程单元 (STA) 模型,因为“Windows 窗体...STA 模型意味着可以在任何线程创建窗口,但窗口一旦创建后就不能切换线程,并且对它所有函数调用都必须在其创建线程发生。...除了 Windows 窗体之外,.NET Framework 类使用自由线程模型。有关 .NET Framework 线程信息,请参见线程处理。...STA 模型要求需从控件非创建线程调用控件任何方法必须被封送到(在其执行)该控件创建线程。...如果您在控件为大量占用资源任务使用多线程,则用户界面可以背景线程执行一个大量占用资源计算同时保持可响应。 用人话描述为:控件是属于主线程(UI线程),不可以跨线程修改其父级。

3.1K41

1-3 Winform 常用控件(

1-3 Winform 常用控件 u 本节学习目标: n System.Windows.Forms.Control基本结构 n 使用基本控件如标签、文本、按钮、列表框和组合框 n 掌握窗体常用属性和方法...Control 类为Form显示所有控件提供基本功能,Form类表示应用程序内窗口。...图1-8 员工信息录入窗体目标界面 u 实验步骤(1): 由图1-9所示,从工具箱之中拖拽具体控件到Form窗体,并更改标签对象和按钮text属性为图1-8所标内容。...案例学习:标签控件隐藏,窗口打开与关闭 本次实验目标是建立两个窗体,当点击图1-11登录系统时候,可以打开另一个窗体点击文字打开后显示学校名称,点击文字隐藏时候隐藏学校名称。...ReadOnly 文本框文本为只读 Text 检索控件输入文本 方法 说明 Clear 删除现有的所有文本 Show 相当于将控件 Visible 属性设置为 True 并显示控件 事件

2.7K10

Excel编程周末速成班第18课:使用用户窗体创建自定义对话框

这些对话框在Office称为用户窗体,可以包含你属于Excel应用程序本身以及其他Windows应用程序对话框中看到所有元素,它们提供了非常强大编程工具,使你可以为Excel应用程序提供自定义可视界面...该窗体通过UserForm对象表示。 窗体控件,包括窗体可视化和功能界面。每种控件都由其自己类表示。 用户窗体VBA代码。...要将控件放置在窗体工具箱单击该控件图标;然后将图标拖到窗体以放置控件。 单击窗体已经存在控件以将其选中。选定控件显示带有8个方形手柄较粗点画边框,如图18-2所示。 ?...窗体代码执行Hide方法来隐藏窗体。 Me.Hide 6.现在,程序代码可以根据需要从窗体控件检索信息。...自我测评 1.用户窗体三个主要组成部分两个是窗体本身和窗体控件,第三个主要成分是什么? 2.哪个属性确定用户窗体标题栏显示文本? 3.用户窗体屏幕位置是相对于哪一点进行测量

10.8K30
领券