我正在开发一个复杂的功能区应用程序,到目前为止一切顺利,但现在我遇到了一个棘手的情况,我必须TextBox
在Form
双击DataGridView
.
问问题
910 次
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 回答