与RepositoryItemTimeSpanEdit的Ok / Accept或Cancel按钮交互?

时间:2015-09-05 00:09:43

标签: winforms devexpress

this帖子所示,我需要与按钮进行交互,我的意思是,当用户按下OK按钮时保存存储库的值,是否有任何建议?

2 个答案:

答案 0 :(得分:0)

我认为您可以使用对象发件人。发件人可能包含TimeSpanEditDropDownForm,你应该得到这个表单的实际值。 :) 我认为这个代码是从控制器调用的吗?

如果它是真的比你有View.CurrentObject,你必须知道哪个属性使用这个TimeSpanEditDropDownForm,所以你可以做这样的事情。

private void OkButton_Click(object sender, EventArgs e)
{
   MyClass myClass = View.CUrrentObject as MyClass;
   TimeSpanEditDropDownForm timeSpanForm = sender as TimeSpanEditDropDownForm;
   myClass.CurrentTime = timeSpanForm.CurrentTime;
   myClass.Session.CommitChanges();
   MessageBox.Show("Ok");
}

我不知道在TimeSpanEditDropDownForm中存储TimeSpan的正确属性的名称是什么,你必须找到它,但我认为它可以帮助:)

答案 1 :(得分:0)

您需要在弹出窗体中找到TimeSpanEdit控件。您可以遍历popupForm.Controls集合以查找具有TimeSpanEdit类型的控件。 Here是如何做到的例子。之后,您可以使用TimeSpanEdit.TimeSpan属性获取TimeSpanEdit控件的值。

private void OkButton_Click(object sender, EventArgs e)
{
    var popupForm = (TimeSpanEditDropDownForm)OwnedForms.FirstOrDefault(item => item is TimeSpanEditDropDownForm);

    if (popupForm == null)
        return;

    var timeSpanEdit = GetAll(this, typeof(TimeSpanEdit)).FirstOrDefault();

    if (timeSpanEdit == null)
        return;

    MessageBox.Show(timeSpanEdit.TimeSpan.ToString());
}

public IEnumerable<Control> GetAll(Control control,Type type)
{
    var controls = control.Controls.Cast<Control>();

    return controls.SelectMany(ctrl => GetAll(ctrl,type))
                              .Concat(controls)
                              .Where(c => c.GetType() == type);
}