首页 / C# / c#-用户操作后从用户控件返回值
c#-用户操作后从用户控件返回值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-用户操作后从用户控件返回值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2552字,纯文字阅读大概需要4分钟。
内容图文
![c#-用户操作后从用户控件返回值](/upload/InfoBanner/zyjiaocheng/677/09926775d2f940e282219bbaf572c4ad.jpg)
本质上,我需要使用Form.ShowDialog()提供的相同功能,但需要使用UserControl.
在Winform中,我加载了一个UserControl,该控件应允许用户从列表中选择一个项目,然后将其返回给调用方.
例如:
var item = myUserControl.SelectItem();
显然,从控件的方法返回非常简单.但是,如何让它等到用户使用控件执行所需的操作?
我可以订阅控件的事件,但是此路径并不理想.
简而言之,我希望UserControl的方法在用户单击特定按钮后返回.
解决方法:
简而言之,UserControl实际上只是一个自定义控件,就像您在WinFrom上放置一个TextBox或ListBox一样,您也可以在窗体上放置UserControl.
就像对待其他任何控件(如TextBox或ListBox)一样对待UserControl.
因此,就像您通过TextBox.Text从TextBox中获取值,或者从ListBox中获取SelectedValue或SelectedItem一样,您也可以从UserControl调用方法以返回SelectedItem.
通常,单击“确定”按钮或关闭表单是在代码中使用每个表单控件获取其值的时候.大概,您将进行一些验证以确保也输入了正确的值.
因此,当您接受表单时,将调用UserControl的方法来获取所选项目.您无需订阅事件即可等待事件发生.同样,就像对待普通ListBox一样对待它.
编辑:
现在更多地了解您问题的性质,这就是我的答案:
假设您有一个如下所示的UserControl:
在后面的代码中,您将必须设置一个事件来监视何时在UserControl中单击“确定”按钮.此事件还将通知订阅者该用户在您的列表中选择的选择:
public partial class SelectFromListUserControl : UserControl
{
public class SelectedItemEventArgs : EventArgs
{
public string SelectedChoice { get; set; }
}
public event EventHandler<SelectedItemEventArgs> ItemHasBeenSelected;
public SelectFromListUserControl()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
var handler = ItemHasBeenSelected;
if (handler != null)
{
handler(this, new SelectedItemEventArgs
{ SelectedChoice = listBox1.SelectedItem.ToString() });
}
}
}
在主窗体上,您将获得与以下代码相似的代码模式.
>应该有一个例程可以创建或显示此特殊用户控件.
>它将钩住事件在用户控件中,以便通知主表单.
>它将绘制用户控件.
>事件处理程序将检索在用户控件中选择的值,然后清除用户控件和/或调出另一个用户控件.
private void ShowSelectFromListWidget()
{
var uc = new SelectFromListUserControl();
uc.ItemHasBeenSelected += uc_ItemHasBeenSelected;
MakeUserControlPrimaryWindow(uc);
}
void uc_ItemHasBeenSelected(object sender,
SelectFromListUserControl.SelectedItemEventArgs e)
{
var value = e.SelectedChoice;
ClosePrimaryUserControl();
}
private void MakeUserControlPrimaryWindow(UserControl uc)
{
// my example just puts in in a panel, but for you
// put your special code here to handle your user control management
panel1.Controls.Add(uc);
}
private void ClosePrimaryUserControl()
{
// put your special code here to handle your user control management
panel1.Controls.Clear();
}
内容总结
以上是互联网集市为您收集整理的c#-用户操作后从用户控件返回值全部内容,希望文章能够帮你解决c#-用户操作后从用户控件返回值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。