سؤال

ولدي تحكم مخصص (نموذج Windows) الذي هو مربع نص البحث. خاصية بشأن التحكم هو اختيار الحالي الذي هو كائن مخصص تحتوي على "معرف"، "كود" و "الوصف". هذه الخاصية هي ربط بيانات يستخدم BindingSource.

وعرض المعلومات يعمل بشكل ممتاز. من ناحية أخرى بغض النظر عن ما إذا كان تعيين تحديث لOnValidate أو OnValueChange أنه لم يستكمل BindingSource. هل هناك شيء أنا في عداد المفقودين في الحصول على هذا التحديث التلقائي؟

private System.Windows.Forms.BindingSource buildPlanComponentDataBindingSource;

    public void LoadBuildPlan(string itemNumber)
    {
        var buildPlanComponents = BuildPlan.LoadBuildPlanComponents(itemNumber, AutomaticPrice);
        buildPlanComponentDataBindingSource.DataSource = buildPlanComponents;
        AssemblyNumber = itemNumber;
    }




[Bindable(true)]
[DefaultValue(null)]
public ILookupSelection CurrentSelection
{
    get
    {
        if (currentSelection == null)
            currentSelection = new LookupSelection {Code = txtLookup.Text};

        return currentSelection;
    }

    set
    {
        if (value == null) return;

        currentSelection = value;

        SetText(currentSelection, DisplayText);
        SetDescription(currentSelection, DisplayDescription);
    }
}
هل كانت مفيدة؟

المحلول

وتنفيذ INotifyPropertyChanged يبدو أن الحل!

    #region IPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
    }

    protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        if (null != PropertyChanged)
        {
            PropertyChanged(this, e);
        }
    }

    #endregion

نصائح أخرى

<اقتباس فقرة>   

وعرض أعمال المعلومات   عظيم. من ناحية أخرى بغض النظر عن   سواء أنا وضعت تحديث لOnValidate   أو OnValueChange فإنه يقوم بتحديث أبدا   BindingSource.

وعند النظر إلى التعليمات البرمجية انا فعلا لست متأكدا من ذلك. في مجموعة الخاص بك، يمكنك اختبار لاغية والتخلي. إذا كانت البيانات يحتوي في الواقع فارغة (وهو ما كنت تصف) سوف يكون التحكم الخاصة بك من التوافق. وأتساءل عما إذا ربما أن الاختيار يتم اخفاء المشكلة الأساسية.

وربما تحتاج للتسبب في ربط البيانات لكتابة قيمته مقابل كل عنصر التحكم الذي كنت تقوم بهذه الطريقة القيمة؟

وعلى افتراض بيانات واحدة ملزمة لنص اسمه txtMySetValue:

وtxtMySetValue.DataBindings [0] .WriteValue ()؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top