/// <summary> /// Processes reflected notification messages. /// </summary> /// <param name="m">The Windows <see cref="T:System.Windows.Forms.Message" /> to process.</param> /// <returns><c>true</c> if message handled; otherwise <c>false</c>.</returns> protected virtual bool WmReflectNotify(ref Message m) { var hdr = m.LParam.ToStructure <User32.NMHDR>(); if (hdr.code == (int)ComCtl32.IPAddressNotification.IPN_FIELDCHANGED) { var ipAddr = m.LParam.ToStructure <ComCtl32.NMIPADDRESS>(); var e = new IPAddressFieldChangedEventArgs(ipAddr.iField, ipAddr.iValue); OnFieldChanged(e); if (e.Value != ipAddr.iValue) { Marshal.WriteInt32(m.LParam, Marshal.OffsetOf(typeof(ComCtl32.NMIPADDRESS), "iValue").ToInt32(), e.Value); } return(true); } return(false); }
/// <summary>Raises the <see cref="E:FieldChanged"/> event.</summary> /// <param name="e">The <see cref="IPAddressFieldChangedEventArgs"/> instance containing the event data.</param> protected void OnFieldChanged(IPAddressFieldChangedEventArgs e) { FieldChanged?.Invoke(this, e); }