Form erst laden dann anzeigen?

Nein, wenn das Form aktiviert wird, wird das Daten holen gestoppt, damit, wenn der Anwender die Seite betrachtet, sich nichts mehr ändert. Wenn das Form nicht Sichtbar ist, werden alle 250ms die Daten Aktualisiert. Diesen Zyclus brauche ich für meine Anwendung.

lg
 
das projekt is so groß ich weiß nicht welchen code ihr sehen möchtet... =(
was könnten denn die wichtigen stellen sein?

lg
 
Oder ev. ein Screen.
Es kann zumindest eigentlich nur beim zuweisen der Daten an die Controls liegen.

Von was für Daten reden wir überhaupt (Dimension)?

Werden die mit DataGridVIew, C1FlexGrid, UltraWinGrid (ka was es noch gibt) dargestellt?

Per Datenbindung oder manuell?
 
Also das ist der Code, bei dem die Daten den Modulen zugewiesen werden:

Code:
         /**
         * \brief Setzt die Digitalen Input daten
         * \param p_DigInput DigitalerInput, der angesprochen werden soll
         * \param p_nDataIdx Der Datenindex, um zu schauen welche Daten angesprochen werden
         * \param p_ServerData read only Server daten
         * \return \c void
        **/
        private void SetDigInputData(NSidControls.DigitalInput p_DigInput, int p_nDataIdx, ro_gui_data_t p_ServerData)
        {
            p_DigInput.GainState = Convert.ToBoolean(p_ServerData.m_iGains[p_nDataIdx]);
            p_DigInput.Offset = p_ServerData.m_iOffsets[p_nDataIdx];
            p_DigInput.Polarity = Convert.ToBoolean(p_ServerData.m_iPolarity[p_nDataIdx]);
        }

Es sind nur ein paar einfache Werte also nichts, was den aufbau der Module verlangsamen sollte.
Also ich glaube das ich das dann Manuell zuweise und nicht per Datenbindung.

Das Unten gezeigte Bild is eins von den 3 Modulen, die sich so langsam zeichnen lassen
 

Anhänge

  • source Modul.jpg
    source Modul.jpg
    9,7 KB · Aufrufe: 23
Ah, also doch selbst gezeichnete Controls.

Hier ist es nun interessant, was beim Zeichnen gemacht wird. Also der Code des/der Control(s). Alles vom OnPaint und darin aufgerufene Methoden
 
Okay jetzt gehts zu Code zu dem ich leider nichts sagen kann und auch noch zu wenig erfahrung habe um zu sagen, was davon wichtig ist oder nicht....
Wenn ihr mir sagen könnt, welches die wichtigen stellen sind dann kann ich die auch raussuchen.

In der Methode sind 14 Draw-Methoden drinne, also die draw methoden, die schon vordefiniert sind. Ich vermute mal daran liegt das? =/
 
Ist so schwierig zu sagen, außerdem Screenshot kennen wir nix davon. Da weißt du schon mehr! ;)
Prinzipiell ist alles wichtig, was beim ersten Zeichnen ausgeführt wird. Wenn du es so nicht weißt: Debuggen!
 
Code:
Brush brush;
			RectangleF rectTemp, drawRect;
			float textAreaSize;

			Rectangle workingRect = Rectangle.Inflate(this.ClientRectangle, - _indentWidth, - _indentHeight);
			float currentUsedPos = 0;

			//==========================================================================
			// Draw the background of the ProgressBar control.
			//==========================================================================
			brush = new SolidBrush(this.BackColor);
			rectTemp = this.ClientRectangle;
			e.Graphics.FillRectangle(brush, rectTemp);
			brush.Dispose();
			//==========================================================================

			//==========================================================================
			if(_orientation == Orientation.Horizontal)
			{
				currentUsedPos = _indentHeight;
				//==========================================================================

				// Get Height of Text Area
				textAreaSize = e.Graphics.MeasureString(_maximum.ToString(), this.Font).Height;

				if(_textTickStyle == TickStyle.TopLeft || _textTickStyle == TickStyle.Both)
				{
					//==========================================================================
					// Draw the 1st Text Line.
					//==========================================================================
					drawRect = new RectangleF(workingRect.Left, currentUsedPos, workingRect.Width, textAreaSize);
					drawRect.Inflate(- _trackerSize.Width/2, 0);
					currentUsedPos += textAreaSize;

					DrawTickTextLine(e.Graphics, drawRect, _tickFrequency, _minimum, _maximum, this.ForeColor, this.Font, _orientation);
					//==========================================================================
				}

				if(_tickStyle == TickStyle.TopLeft  || _tickStyle == TickStyle.Both)
				{
					//==========================================================================
					// Draw the 1st Tick Line.
					//==========================================================================
					drawRect = new RectangleF(workingRect.Left, currentUsedPos, workingRect.Width, _tickHeight);
					drawRect.Inflate(- _trackerSize.Width/2, 0);
					currentUsedPos += _tickHeight + 1;

					DrawTickLine(e.Graphics, drawRect, _tickFrequency, _minimum, _maximum, _tickColor, _orientation);
					//==========================================================================
				}

				//==========================================================================
				// Caculate the Tracker's rectangle
				//==========================================================================
				float currentTrackerPos;
				if (_maximum == _minimum)
					currentTrackerPos = workingRect.Left;
				else
					currentTrackerPos = (workingRect.Width - _trackerSize.Width) * (_value - _minimum)/(_maximum - _minimum)  + workingRect.Left;
				_trackerRect = new RectangleF(currentTrackerPos,currentUsedPos,_trackerSize.Width, _trackerSize.Height);// Remember this for drawing the Tracker later
				//_trackerRect.Inflate(0,-1);

				//==========================================================================
				// Draw the Track Line
				//==========================================================================
				drawRect = new RectangleF(workingRect.Left , currentUsedPos + _trackerSize.Height/2 - _trackLineHeight/2, workingRect.Width, _trackLineHeight);
				DrawTrackLine(e.Graphics, drawRect);
				currentUsedPos += _trackerSize.Height;


				//==========================================================================

				if(_tickStyle == TickStyle.BottomRight || _tickStyle == TickStyle.Both)
				{
					//==========================================================================
					// Draw the 2st Tick Line.
					//==========================================================================
					currentUsedPos += 1;
					drawRect = new RectangleF(workingRect.Left, currentUsedPos, workingRect.Width, _tickHeight);
					drawRect.Inflate(- _trackerSize.Width/2, 0);
					currentUsedPos += _tickHeight;

					DrawTickLine(e.Graphics, drawRect, _tickFrequency, _minimum, _maximum, _tickColor, _orientation);
					//==========================================================================
				}

				if(_textTickStyle == TickStyle.BottomRight || _textTickStyle == TickStyle.Both)
				{
					//==========================================================================
					// Draw the 2st Text Line.
					//==========================================================================
					// Get Height of Text Area
					drawRect = new RectangleF(workingRect.Left, currentUsedPos, workingRect.Width, textAreaSize);
					drawRect.Inflate(- _trackerSize.Width/2, 0);
					currentUsedPos += textAreaSize;

					DrawTickTextLine(e.Graphics, drawRect, _tickFrequency, _minimum, _maximum, this.ForeColor, this.Font, _orientation);
					//==========================================================================
				}
			}

			//==========================================================================
			// Check for special values of Max, Min & Value
			if (_maximum == _minimum)
			{
				// Draw border only and exit;
				DrawBorder(e.Graphics);
				return;
			}
			//==========================================================================

			//==========================================================================
			// Draw the Tracker
			//==========================================================================
			DrawTracker(e.Graphics, _trackerRect);
			//==========================================================================

			// Draw border
			DrawBorder(e.Graphics);
			//==========================================================================

			// Draws a focus rectangle
			//if(this.Focused && this.BackColor != Color.Transparent)
			if(this.Focused)
					ControlPaint.DrawFocusRectangle(e.Graphics, Rectangle.Inflate(this.ClientRectangle, -2, -2));
			//==========================================================================

das ist der Code der in der Methode aufgerufen wird... durch die Kommentare kann man eigentlich ganz gut sehen, was da gezeichnet wird.

lg
Philipp
 

Neue Beiträge

Zurück