نقل قول: مشکل این کلاس کنترل چیه؟
نقل قول: مشکل این کلاس کنترل چیه؟
با سلام. ینی چی؟ من که نفهمیدم چی شد! تا حالا با کنترل flowlayoutpanel کار کردی ؟ هر کدوم از اشیاء رو که hide کنی غیب میشه و هرکدوم و که show کنی نمایان می شه در ابتدای کنترل اصلی!
نقل قول: مشکل این کلاس کنترل چیه؟
سلام
ممنون
کاری با کنترل FlowLayoutPane ندارم.
-------------------------------------------
یه کم درباره ی رویداد Invalidated و Paint (اینکه هر کدوم چند بار و دقیقا چه زمانی اجرا میشن) ، توضیح میدین؟
آیا رویداد Invalidated ، مثلا 100 بار هم که پشت سر هم متد Control.Invalidate را صداش کنیم ، فقط یکبار رویدادش اجرا میشه؟
اگه این طوره ، پس برای دفعه ی بعدی ، چه زمانی متد Control.Invalidate را صدا کنیم ، برای بار بعدی هم رویداد Invalidated اجرا میشه؟ (متوجه ی منظورم شدید؟)
چرا تعداد اجرای رویداد Invalidated و Paint با هم فرق دارن؟ آخه مگه نباید هر بار متد Control.Invalidate را فراخونی میکنیم ، به همون تعدادی که فراخونی میکنیم ، رسم (Paint فراخونی بشه) انجام بده ؟ چرا رویداد Paint اکثر اوقات دو یا چند بار اتفاق میافته؟ در این صورت (که دو یا چند بار اتفاق میافته) و ما فقط یکبار متد Control.Invalidate را فراخوانی کرده بودیم ، بقیه ی بارها ، کدوم متد باعث شد که این رویداد Paint اجرا بشه؟
خیلی ممنون
نقل قول: مشکل این کلاس کنترل چیه؟
سلامی مجدد
آخرین تغییراتی که دادم را فایل این کلاس را در زیر میذارم.
الان مشکلش اینه که وقتی پروپرتی TextAutoSize از کلاس TransparentControl را تغییر میدم ، متن ای که رسم میکنه ، وقتی موس را روی این کنترل میبریم ، ضخیم رسم میکنه . دلیل شو گشتم ، ولی پیدا نکردم . کسی میدونه راهنمایی کنه؟
الان این کد زیر ، اشکالی که در بالا توضیح دادم را نمایان میکنه (اول روی دکمه ی AutoSize ، کلیک راست کنید و به متن کنترل TransparentControl هم دقت کنید که خواهید دید کمی ضخیم تر میشه . اگه فرم را مینیمایز و بعد به حالت اولیه اش برگردونید ، متن ، نازک میشه. اگه دوباره این کاری که گفتم را انجام بدین یا موس را روی کنترل ببرید ، متن ، ضخیم تر میشه) :
private void Form1_Load(object sender, EventArgs e)
{
Button btnAutoSize = new Button { Bounds = new Rectangle(10, 10, 100, 35), Parent = this, Text = "AutoSize", BackColor = Color.WhiteSmoke };
btnAutoSize.MouseUp += new MouseEventHandler(this.Button3_MouseUp);
TransparentControlText text = new TransparentControlText("salam");
this.transparentControl = new TransparentControl(text, new Rectangle(new Point(100, 200), new Size(250, 100)), false);
this.Controls.Add(this.transparentControl);
}
private void Button3_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
this.transparentControl.TextAutoSize = false;
else if (e.Button == MouseButtons.Right)
this.transparentControl.TextAutoSize = true;
}
دانلود آخرین تغییرات فایل TransparentControl :
https://8pic.ir/uploads/TransparentControl_bc65d.rar
با تشکر
نقل قول: مشکل این کلاس کنترل چیه؟
سلامی مجدد
انگار حدودا ، بهتر پیدا کردم که مشکل از کجاست (اما هنوز دقیق متوجه نشدم) .
مشکل انگار از کدهای تغییر سایز در TransparentControl هست . ربطی به TransparentControlText نداره.
مثلا کدهای زیر ، مشکلی ندارن (این کد ، رویداد Button3_MouseUp در کد بالاست که تغییر کرده) (برای آپدیت و رسم ، بعد از کلیک روی دکمه ، موس را روی کنترل TransparentControl ببرید) :
private void Button3_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
this.transparentControl.TransparentControlText.Tex t = "salam";
else if (e.Button == MouseButtons.Right)
this.transparentControl.TransparentControlText.Tex t = "khobi?";
}
یا
private void Button3_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
this.transparentControl.TransparentControlText.Tex tFont = this.Font;
else if (e.Button == MouseButtons.Right)
this.transparentControl.TransparentControlText.Tex t = "khobi?";
}
اما این کد مشکل داره :
private void Button3_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
this.transparentControl.Size = new Size(250, 100);
else if (e.Button == MouseButtons.Right)
this.transparentControl.Size = new Size(180, 70);
}
حالا داخل کلاس TransparentControlText مشکل خودش را نشون میده چون داخل رویداد TransparentControl_TextAutoSizeChanged ، کدِ this.TransparentControl.Size = fontSize.ToSize() را بکار بردم.