Back to Devexpress

LookUpEditBase.ProcessNewValue Event

windowsforms-devexpress-dot-xtraeditors-dot-lookupeditbase.md

latest8.7 KB
Original Source

LookUpEditBase.ProcessNewValue Event

Occurs when a new value entered into the edit box is validated.

Namespace : DevExpress.XtraEditors

Assembly : DevExpress.XtraEditors.v25.2.dll

NuGet Package : DevExpress.Win.Navigation

Declaration

csharp
[DXCategory("Events")]
public event ProcessNewValueEventHandler ProcessNewValue
vb
<DXCategory("Events")>
Public Event ProcessNewValue As ProcessNewValueEventHandler

Event Data

The ProcessNewValue event's data class is ProcessNewValueEventArgs. The following properties provide information specific to this event:

PropertyDescription
DisplayValueGets or sets the value entered by the end-user.
HandledGets or sets a value specifying whether the lookup editor must locate the newly inserted record.

Remarks

The editor’s ProcessNewValue event is equivalent to the RepositoryItemLookUpEditBase.ProcessNewValue event. Refer to the RepositoryItemLookUpEditBase.ProcessNewValue topic for more information.

Example

This example demonstrates how to allow users to type in the text box and add new values to the lookup’s data source.

  • Drop the WinForms LookUpEdit control onto a form.
  • Set the lookup’s TextEditStyle property to Standard to allow users to type in the text box.
  • Handle the ProcessNewValue event to parse entered values and add new records to the lookup’s data source.

A message box is displayed before a new record is added to the data source. A new value is added to the data source after the user confirms the operation.

csharp
using System;
using System.Windows.Forms;
using System.Collections.Generic;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;

public Form1() {
    InitializeComponent();
    // Binds the lookup to data.
    lookUpEdit1.Properties.DataSource = Task.GetSampleData();
    // Sets the lookup's data fields.
    lookUpEdit1.Properties.DisplayMember = "Caption";
    lookUpEdit1.Properties.ValueMember = "ID";
    // Sets the lookup's value.
    lookUpEdit1.EditValue = 0;
    // Enables adding new values.
    lookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard;
    lookUpEdit1.ProcessNewValue += new ProcessNewValueEventHandler(this.lookUpEdit1_ProcessNewValue);
}
private void lookUpEdit1_ProcessNewValue(object sender, ProcessNewValueEventArgs e) {
    if((string)e.DisplayValue == String.Empty) return;
    if(XtraMessageBox.Show("Do you want to add a new value?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {
        List<Task> dataSource = (sender as LookUpEdit).Properties.DataSource as List<Task>;
        dataSource.Add(new Task(dataSource.Count) { Caption = (string)e.DisplayValue });
        e.Handled = true;
    }
}

public class Task {
    int fID;
    public Task(int id) {
        fID = id;
        CreateDate = DateTime.Today;
    }
    public int ID {
        get {
            return fID;
        }
    }
    public string Caption { get; set; }
    public DateTime CreateDate { get; set; }
    public static List<Task> GetSampleData() {
        return new List<Task>() {
            new Task(0){Caption = "Research", CreateDate = new DateTime(2022, 10, 15)},
            new Task(1){Caption = "UI Design", CreateDate = new DateTime(2022, 11, 5)},
            new Task(2){Caption = "Environment Setup", CreateDate = new DateTime(2022, 11, 10)},
            new Task(3){Caption = "Sprint 1", CreateDate = new DateTime(2022, 11, 11)},
            new Task(4){Caption = "Sprint 2", CreateDate = new DateTime(2022, 12, 12)},
            new Task(5){Caption = "Sprint 3", CreateDate = new DateTime(2023, 1, 10)},
            new Task(6){Caption = "Testing", CreateDate = new DateTime(2022, 2, 10)}
        };
    }
}
vb
Imports System
Imports System.Windows.Forms
Imports System.Collections.Generic
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls

Public Sub New()
    InitializeComponent()
    ' Binds the lookup to data.
    lookUpEdit1.Properties.DataSource = Task.GetSampleData()
    ' Sets the lookup's data fields.
    lookUpEdit1.Properties.DisplayMember = "Caption"
    lookUpEdit1.Properties.ValueMember = "ID"
    ' Sets the lookup's value.
    lookUpEdit1.EditValue = 0
    ' Enables adding new values.
    lookUpEdit1.Properties.TextEditStyle = TextEditStyles.Standard
    AddHandler lookUpEdit1.ProcessNewValue, AddressOf lookUpEdit1_ProcessNewValue
End Sub
Private Sub lookUpEdit1_ProcessNewValue(ByVal sender As Object, ByVal e As ProcessNewValueEventArgs)
    If CStr(e.DisplayValue) = String.Empty Then
        Return
    End If
    If XtraMessageBox.Show("Do you want to add a new value?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
        Dim dataSource As List(Of Task) = TryCast((TryCast(sender, LookUpEdit)).Properties.DataSource, List(Of Task))
        dataSource.Add(New Task(dataSource.Count) With {.Caption = CStr(e.DisplayValue)})
        e.Handled = True
    End If
End Sub

Public Class Task
    Private fID As Integer
    Public Sub New(ByVal id As Integer)
        fID = id
        CreateDate = Date.Today
    End Sub
    Public ReadOnly Property ID() As Integer
        Get
            Return fID
        End Get
    End Property
    Public Property Caption() As String
    Public Property CreateDate() As Date
    Public Shared Function GetSampleData() As List(Of Task)
        Return New List(Of Task)() From {
            New Task(0) With {.Caption = "Research", .CreateDate = New Date(2022, 10, 15)},
            New Task(1) With {.Caption = "UI Design", .CreateDate = New Date(2022, 11, 5)},
            New Task(2) With {.Caption = "Environment Setup", .CreateDate = New Date(2022, 11, 10)},
            New Task(3) With {.Caption = "Sprint 1", .CreateDate = New Date(2022, 11, 11)},
            New Task(4) With {.Caption = "Sprint 2", .CreateDate = New Date(2022, 12, 12)},
            New Task(5) With {.Caption = "Sprint 3", .CreateDate = New Date(2023, 1, 10)},
            New Task(6) With {.Caption = "Testing", .CreateDate = New Date(2022, 2, 10)}
        }
    End Function
End Class

The following code snippet (auto-collected from DevExpress Examples) contains a reference to the ProcessNewValue event.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

winforms-data-lookups-combobox-mode/CS/Lookup-ComboboxMode/Form1.cs#L60

csharp
gridLookUpEdit1.Properties.DisplayMember = gridLookUpEdit1.Properties.ValueMember;
gridLookUpEdit1.ProcessNewValue += GridLookUpEdit1_ProcessNewValue;

winforms-data-lookups-combobox-mode/VB/Lookup-ComboboxMode/Form1.vb#L40

vb
gridLookUpEdit1.Properties.DisplayMember = gridLookUpEdit1.Properties.ValueMember
    AddHandler gridLookUpEdit1.ProcessNewValue, AddressOf GridLookUpEdit1_ProcessNewValue
End Sub

See Also

LookUpEditBase Class

LookUpEditBase Members

DevExpress.XtraEditors Namespace