【问题标题】:how to pass a datagridview value after double clicking to a textbox on another form双击另一个表单上的文本框后如何传递datagridview值
【发布时间】:2012-07-09 15:35:24
【问题描述】:

我正在开发一个复杂的功能区应用程序,到目前为止一切顺利,但现在我遇到了一个棘手的情况,我必须在双击 @ 后将 DataGridView 的值传递给另一个 Form 上的 TextBox 987654323@.

【问题讨论】:

    标签: c# winforms events user-controls datagridview


    【解决方案1】:

    实际上,您有很多选择。这一切都取决于您的应用程序的代码/架构,但通常您正在寻找的是委托。 这是一篇面向代表的介绍性文章:linkhere 是一些基本示例的链接,这些示例还将向您介绍 Actions 和 Lambdas。

    或者,如果这两个表单可以互相看到(如果您在一个父表单中有两个表单的引用),您可以在源表单上创建一个事件并在目标表单上订阅它,然后传递其中的数据方式。

    源表格:

    • 定义委托

    public delegate void RibbonDataHandler(string);
    

    • 定义事件

    public event RibbonDataHandler RibbonData;
    

    • 定义执行事件的方法

    protected virtual void OnRibbonData( string value )
    {
        if( RibbonData != null )
            RibbonData( value );
    }
    

    • 在 DataGridView

    DoubleClick 事件处理程序上调用事件
    string value = // Get Value from the gridView
    OnRibbonData( value );
    

    目的地表格: • 添加一个公共属性来设置TextBox

    public string TextBoxValue
    {
        get { return txtValue.Text; }
        set { txtValue.Text = value; }
    }
    

    父表单:

    • 将这两个表单添加为字段

    private Form _sourceForm;
    private Form _destinationForm;
    

    • 初始化表单

    // Well, initialize the forms in the way you need it, maybe on the Load event?
    _sourceForm = new SourceForm();
    _destinationForm = new DestinationForm();
    _sourceForm.RibbonData += new SourceForm.RibbonDataHandler(OnRibbonData);
    

    • 定义 RibbonData 处理程序

    private void OnRibbonData( string value )
    {
        _destinationForm.TextBoxValue = value ?? String.Empty;
    }
    

    免责声明: 我把所有这些都写出来了,此时没有VS,如果您有更多问题或某些内容不起作用,请发表评论。 :)

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多