首页
学习
活动
专区
工具
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窗体中访问另一个窗体上的控件,并在不同的窗体之间传递数据。

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

相关·内容

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

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

8.4K20

Windows 窗体中的事件顺序

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

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

    这是在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.2K20

    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.4K30

    创建可维护和可测试的 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.4K30

    在 Windows上写 Python 代码的最佳组合!

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

    5.2K20

    C# SplitContainer 控件详细用法

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

    2.9K30

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

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

    1.3K20

    SplitContainer(拆分条控件)

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

    2.3K20

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

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

    3.5K41

    Invoke 和 BeginInvoke 的区别

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

    84420

    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.8K10

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

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

    11.1K30
    领券