// Process mouse-down behavior for click. protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (state_ != TextServiceState.ServiceProvided) { // Attempt to update text from service, and set color // state accordingly. TextService ts = (TextService)serviceContainer.GetService(typeof(TextService)); if (ts != null) { this.label = ts.text; state = TextServiceState.ServiceObtained; } else { this.label = "Service Not Found"; state = TextServiceState.ServiceNotFound; } } } if (e.Button == MouseButtons.Right) { if (state_ == TextServiceState.ServiceProvided) { // Remove service if the container provided it. if (serviceContainer.GetService(typeof(TextService)) != null) { serviceContainer.RemoveService(typeof(TextService), true); state = TextServiceState.ServiceNotObtained; this.label = "Service Removed"; } } else { // Obtain string and provide text service. using (StringInputDialog form = new StringInputDialog("Test String")) { form.StartPosition = FormStartPosition.CenterParent; if (form.ShowDialog() == DialogResult.OK) { if (serviceContainer.GetService(typeof(TextService)) != null) { serviceContainer.RemoveService(typeof(TextService), true); } parent.ResetServiceTree(this, new EventArgs()); serviceContainer.AddService(typeof(TextService), new TextService(form.inputTextBox.Text), true); state = TextServiceState.ServiceProvided; this.label = "Provided Text: " + form.inputTextBox.Text; } } } } parent.UpdateServiceCoverage(); }
// Process mouse-down behavior for click. protected override void OnMouseDown( System.Windows.Forms.MouseEventArgs e) { // This example control responds to mouse clicks as follows: // // Left click - control attempts to obtain a text service // and sets its label text to the text provided by the service // Right click - if the control has already provided a text // service, this control does nothing. Otherwise, the control // shows a dialog box to specify text to provide as a new text // service, after clearing the tree's services. if (e.Button == MouseButtons.Left) { if (state_ != TextServiceState.ServiceProvided) { // Attempt to update text from service, and set // color state accordingly. TextService ts = (TextService)GetService(typeof(TextService)); if (ts != null) { this.label = ts.text; state = TextServiceState.ServiceObtained; } else { this.label = "Service Not Found"; state = TextServiceState.ServiceNotFound; } } } if (e.Button == MouseButtons.Right) { if (state_ == TextServiceState.ServiceProvided) { // Remove the service if the container provided it. if (GetService(typeof(TextService)) != null) { RemoveService(typeof(TextService), true); state = TextServiceState.ServiceNotObtained; this.label = "Service Removed"; } } else { // Obtain string and provide text service. using (StringInputDialog form = new StringInputDialog("Test String")) { form.StartPosition = FormStartPosition.CenterParent; if (form.ShowDialog() == DialogResult.OK) { if (GetService(typeof(TextService)) != null) { RemoveService(typeof(TextService), true); } parent.ResetServiceTree(this, new EventArgs()); AddService(typeof(TextService), new TextService(form.inputTextBox.Text), true); // The following commented method uses a service creator callback. // AddService(typeof(TextService), // new ServiceCreatorCallback(this.CreateTextService)); state = TextServiceState.ServiceProvided; this.label = "Provided Text: " + form.inputTextBox.Text; } } } } parent.UpdateServiceCoverage(); }