P: ¿Hay alguna manera de controlar sobre la marcha la edición de texto por tabla o por celda? Tenemos algunas tablas en las que no queremos edición sobre la marcha, y otras en las que sólo queremos permitir edición en marcha de los valores de la celda y del título...
R: Usted puede hacer eso manejando los eventos Diagram.NodeTextEditing y Diagram.CellTextEditing. Establezca e.Cancel a true para evitar que el usuario edite el texto del nodo.
P: ¿Cómo desplazar o acercar el diagrama usando la rueda del ratón?
R: Usted puede añadir soporte para desplazamiento con la rueda del ratón así:
private void Form1_Load(object sender, System.EventArgs e) { diagramView.MouseWheel += new MouseEventHandler(diagramView_MouseWheel); } void diagramView_MouseWheel(object sender, MouseEventArgs args) { diagramView fcSender = sender as diagramView; float newScrollY = fcSender.ScrollY - args.Delta / 50; if (newScrollY > fcSender.DocExtents.Top) fcSender.ScrollY = newScrollY; }Este evento se hereda de la clase Control, pero por alguna razón que no aparece en la lista de eventos en el IDE. Debe agregar un controlador de forma manual. El controlador anterior desplaza el documento, pero si lo desea, puede cambiar eso para hacer un zoom in/out al alterar la propiedad DiagramView.ZoomFactor.
P: Quiero seleccionar todo en el gráfico y mover la selección hacia abajo por una cierta cantidad de dx y dy. ¿Hay una manera de mover con facilidad una selección completa?
R: Mover un nodo también mueve los extremos del enlace, por lo que la solución más fácil es mover todos los artículos en dos fases. En primer lugar, mover todos los nodos seleccionados - esto también desplaza los puntos extremos de los enlaces. A continuación, desplazar todos los puntos de control de todos los enlaces seleccionados, excepto los puntos finales (los puntos finales se han movido con los nodos).
P: Estoy utilizando un objeto ControlNode donde tengo un TextEditor. ¿Cómo aplicar la pintura, mientras que lo cambio de tamaño y lo muevo?
R: Windows envías mensajes WM_PAINT a los controles solamente cuando no hay ningún otro mensaje en la cola de mensajes, así que el control hospedado no es repintado hasta que usted deja de mover el ratón. Usted podría forzar el control hospedado a repintarse a sí mismo llamando a su método Refresh desde el manejador de eventos NodeModifying.
P: Dividí el áre de FlowChart en 4 carriles. ¿Hay algún evento que se levanta por un clic izquierdo en RowHeaders?
R: Usted podría controlar el evento Clicked y llamar al método GetHeaderFromPoint para averiguar si se ha hecho clic en algún encabezado.