Hi herbivore,
habe jetzt was passendes gefunden. Habe vielleicht immer nur die falschen Suchbegriffe eingegeben. Dieser Link hat mir auf jeden Fall geholfen.
2 DataGridView Scrollbar Synchron
MfG
Hi zusammen,
ich würde gerne meine beiden Scollbars im DataGridView synchronisch bewegen, also wenn ich den einen bewege, dann geht der zweite ebenfalls mit und umgekehrt auch. Leider habe ich nichts passendes gefunden.
Hat jemand ein Tipp für mich?
MfG
Hi herbivore,
dann werde ich mich wohl mal mit override beschäftigen, damit habe ich noch gar nicht gearbeitet. Du hast nicht zufällig eine gute Seite, wo ich was drüber lesen und durcharbeiten kann?
MfG
Hi herbivore,
darüber habe ich schon was gelesen und auch versucht leider funktionierte es nicht. Habe es an verschiedene Stellen versucht einzusetzen, leider ohne Erfolg.
Muss es dann da rein wo ich zeichne oder in _scroll?
Leider weiß ich nicht wo es genau hinkommt, habe es am Anfang und am Ende und mittendrinn versucht leider alles ohne Erfolg, das Flackern blieb.
MfG
Hi Zusammen,
ich zeichne in einer DataGridview eine bzw mehrere Lininen für jede Zeile. Wenn ich scrolle dann flackert es ungemein. Gibts da eine Möglichkeit es zu unterbinden?
Habe es hiermit versucht, leider klappt es nicht ganz so gut:
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
dataGridView1.Invalidate();
}
Wäre super wenn mir da einer einen Tipp geben kann.
MfG
Hallo herbivore,
ich glaube ich habe mich schon zu doll verrannt 🤔 ?(
das ist richtig ich will nur in den Sichtbaren Zellen zeichnen. Aber die Linie die ich zeichne sollte schon Wagerecht angezeigt werden auch wenn der Endpunkt ausserhalb des Sichtbereiches ist.
Ich habe also ein Anfangspunkt der ermittelt werden kann, da er ja aufm Bildschirm sichtbar ist, dann habe ich ein Endpunkt der nicht Sichtbar ist, daher bekomme ich auch .X = 0 und .Y = 0. Das ist ja auch logisch, da er mir die Koordinaten nicht ermitteln kann, da sie nicht aufm Bildschirm sind.
Wie stelle ich es denn an, dass er mir die Linie bis zum ende der Sichtbaren Zelle zeichnet und sobald ich Scrolle für jede weitere Zelle bis zum Endpunkt?
Ich glaub so langsam must du mich für völlig blöd halten, innerlich hoffe ich nicht 🙂
MfG
Hi herbivore,
jupps ich will nur in den Zellen zeichnen. Das stimmt, dass mich nur die Sichtbaren interessieren.
Blöde frage ich weiß, aber wie stelle ich es denn an wenn die Punkte also der Startpunkt und der Endpunkt oder nur einer davon nicht Sichtbar ist.
Es müsste doch machbar sein ein Zeitstrahl zwischen einem Anfangsdatum und einen Enddatum zu zeichnen.
Komme da einfach nicht weiter,wäre echt super wenn du mir da auf die Sprünge helfen könntest.
MfG
Guten Morgen herbivore,
das denke ich leider auch. Habe es mal getestet, sobald die Columns im Sichfeld sind, dann zeichnet er wieder so wie es sein soll. Hast du vielleicht ein Tip für mich, wie ich es anders machen kann? Oder muss ich vielleicht in der _CellPainting zeichnen? Die erste zeichne ich nämlich in _Paint.
MfG
Hi herbivore,
könnte es nicht eher daran liegen, dass ich
Rectangle rec = dataGridView1.GetCellDisplayRectangle(col.Index, row.Index, false);
dataGridView1.RectangleToClient(rec);
benutze? Denn es passiert nur wenn das Datum was ich eingebe ausserhalb vom Bildschirm ist. Also ich kann vom 01.01.2007 bis 15.01.2007 sehen und müsste dann scrollen um die anderen zu sehen.
MfG
Hi Zusammen,
habe da ein Problem festgestellt, dass ich bis jetzt noch nicht lösen konnte. Vielleicht weiß jemand rat und kann mir helfen.
Ich habe ein DataGridView in den Columns steht das Datum. Vom 01.01.2007 bis 31.03.2007. Hier ist der Code dazu:
int tage, tage1;
ka.Kalender1();
tage = ka.tage1;
monat1 = ka.monatslaenge;
tage1 = 0;
for (int i = 1; i < 4; i++)
{
tage1 += Convert.ToInt32(monat1[i - 1]);
}
DateTime dt = new DateTime(2006, 12, 31);
for (int i = 1; i < tage1 + 1; i++)
{
dataGridView1.Columns.Add(dt.AddDays(i).ToShortDateString(), (dt.AddDays(i).DayOfWeek.ToString() + " " + dt.AddDays(i).ToShortDateString()));
dataGridView2.Columns.Add(dt.AddDays(i).ToShortDateString(), dt.AddDays(i).DayOfWeek.ToString() + " " + dt.AddDays(i).ToShortDateString());
}
Das klappt ja auch wunderbar. Jetzt möchte ich, dass ein Zeitstrahl gezeichnet wird z.B. vom 02.01.2007 bis 15.01.2007. Das klappt auch wunderbar, allerdings nur bis zum 17.01.2007. Also wenn ich z.B. einen Zeitstrahl vom 02.01.2007 bis 18.01.2007, dann werden die X und Y Koordinate mit 0 ausgegeben, also in der oberen Ecke. Für den Startpunkt kommen die richtigen Koordinate.
Hier ist mein Code zum Zeichnen:
Pen pen = new Pen(Brushes.Black, 8);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Index == dataGridView1.RowCount - 1)
{
break;
}
Point anfang = new Point();
Point ende = new Point();
anfang.X = -1;
ende.X = -1;
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
Rectangle rec = dataGridView1.GetCellDisplayRectangle(col.Index, row.Index, true);
dataGridView1.RectangleToClient(rec);
if (col.Name == "01.01.2007")
{
anfang.X = rec.Left + rec.Width / 2;
anfang.Y = rec.Top + rec.Height / 2;
}
if (col.Name == "18.01.2007")
{
ende.X = rec.Left + rec.Width / 2;
ende.Y = rec.Top + rec.Height / 2;
}
}
if (anfang.X >= 0 && ende.X >= 0)
{
pen.StartCap = LineCap.DiamondAnchor;
pen.EndCap = LineCap.DiamondAnchor;
e.Graphics.DrawLine(pen, anfang, ende);
}
}
Wäre echt super wenn mir einer helfen könnte, kann es mir nicht erklären, warum er ab dem 18.01.2007 nur noch die 0 für die X und Y Koordinate ermittelt.
MfG