0

我正在开发一个复杂的功能区应用程序,到目前为止一切顺利,但现在我遇到了一个棘手的情况,我必须TextBoxForm双击DataGridView.

4

1 回答 1

0

实际上,您有很多选择。这一切都取决于您的应用程序的代码/架构,但通常您正在寻找的是委托。这是代表的介绍性文章:链接。这里是一些基本示例的链接它将向您介绍 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,如果您有更多问题或者如果某些东西不起作用,请发表评论。:)

于 2012-12-18T10:17:28.647 回答