Problem mit verzögertem WinForms MonthCalendarC#

Ein Treffpunkt für C#-Programmierer
Guest
 Problem mit verzögertem WinForms MonthCalendar

Post by Guest »

Ich habe ein ziemlich einfaches Formular, das angezeigt werden sollte, wenn ich auf eine Schaltfläche in einem anderen Formular klicke.
Es ist nur ein Monatskalender und die Schaltflächen OK/Abbrechen.
Wenn ich das Formular öffne Beim ersten Mal funktioniert es großartig, ich kann in den Monaten hin und her wechseln, ich kann verschiedene Tage auswählen, es reagiert wirklich und die Datumsvariable ändert sich tatsächlich und die Rückgaben funktionieren ordnungsgemäß.
Wenn ich OK drücke und dann das öffne Wenn ich das Formular erneut auswähle, um ein anderes Datum auszuwählen, kommt es nur zu massiven Verzögerungen: Die Pfeile zum Scrollen durch die Monate reagieren nicht mehr, leuchten manchmal nicht auf, wenn ich darüber schwebe, und die Maus wird „unkalibriert“, das heißt, mein Cursor steht auf einem Ort, und das Datum, das beim Linksklick ausgewählt wird, ist ein anderes (oder gar keins).
Das ist mein Code:

Code: Select all

public partial class CalendarForm : Form
{
private DateTime selectedDate;
private bool isDateSelected;

public CalendarForm(DateTime initialDate)
{
InitializeComponent();
InitializeCustomComponents(initialDate);
}

private void InitializeCustomComponents(DateTime initialDate)
{
this.FormBorderStyle = FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
CultureInfo ci = new CultureInfo("es-ES");
monthCalendar.TitleBackColor = System.Drawing.Color.LightBlue;
monthCalendar.TitleForeColor = System.Drawing.Color.White;
monthCalendar.TrailingForeColor = System.Drawing.Color.Gray;
monthCalendar.FirstDayOfWeek = Day.Monday;
monthCalendar.CalendarDimensions = new System.Drawing.Size(1, 1);
monthCalendar.TodayDate = initialDate;
monthCalendar.SelectionStart = initialDate;
monthCalendar.SelectionEnd = initialDate;
btnOK.Click += BtnOK_Click;
btnCancel.Click += BtnCancel_Click;
}

private void BtnOK_Click(object sender, EventArgs e)
{
selectedDate = monthCalendar.SelectionStart;
isDateSelected = true;
this.DialogResult = DialogResult.OK;
this.Close();
}

private void BtnCancel_Click(object sender, EventArgs e)
{
isDateSelected = false;
this.DialogResult = DialogResult.Cancel;
this.Close();
}

public (DateTime, bool) GetSelectedDate()
{
return (selectedDate, isDateSelected);
}
}
und hier heißt das Formular:

Code: Select all

private void btnCalendar_Click(object sender, EventArgs e)
{
using (CalendarForm calendarForm = new CalendarForm(selectedDate))
{
if (calendarForm.ShowDialog() == DialogResult.OK)
{
(DateTime date, bool isDateSelected) = calendarForm.GetSelectedDate();
if (isDateSelected)
{
selectedDate = date;
LoadDataForDate(selectedDate);
}
}
}
}
Irgendeine Idee, was passiert? Was mache ich falsch?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post