PDA

View Full Version : سوال: اشکال در لود فونت ها



iran_sky
جمعه 05 آذر 1389, 09:00 صبح
با سلام
این کد فونتهای سیستم رو نمایش میدهد در یک combobox و همچنین عدد 2 تا 100 را داخل combobox دیگری نمایش میدهد مشکل این قسمت هایی که رنگی کردم چیست چون همین قسمت ها رو خطا میده


private void Form1_Load(object sender, EventArgs e)
{
foreach (FontFamily fn in FontFamily.Families)
{
combo_font.Items.Add(fn.Name);
}
for (int i = 2; i <= 100; i += 2)
{
combo_size.Items.Add(i);
}
for (int j = 0; j <= combo_font.Items.Count - 1; j++)
{
if (combo_font.Items(j) == RTB.Font.Name)
{
combo_font.Text = combo_font.Items(j);
break;
}
}
for (int k = 0; k <= combo_size.Items.Count - 1; k++)
{
if (combo_size.Items(k) == Convert.ToInt32(RTB.Font.Size))
{
combo_size.Text = combo_size.Items(k);
break;
}
}
}

اینم خطا

Error 1 Non-invocable member 'System.Windows.Forms.ToolStripComboBox.Items' cannot be used like a method.

alishokr
جمعه 05 آذر 1389, 13:21 عصر
سلام.
برای دسترسی به Indexer در #C از [] استفاده میشه ، نه () ...


combo_size.Items[k]

در ضمن در آخر کدتون هم ToString رو فراخونی کنید تا به String تبدیل بشه . چون خروجی Indexer از نوع object هست .

با آرزوی موفقیت ...

iran_sky
جمعه 05 آذر 1389, 14:05 عصر
دوست عزیز به این شکل تغییرش دادم اما بازم font ها اضافه نشدن ولی خطا نداره


private void Form1_Load(object sender, EventArgs e)
{
foreach (FontFamily fn in FontFamily.Families)
{
combo_font.Items.Add(fn.Name);
}
for (int i = 2; i <= 100; i += 2)
{
combo_size.Items.Add(i);
}
for (int j = 0; j <= combo_font.Items.Count - 1; j++)
{
if (combo_font.Items[j].ToString() == RTB.Font.Name)
{
combo_font.Text = combo_font.Items[j].ToString();
break;
}
}
for (int k = 0; k <= combo_size.Items.Count - 1; k++)
{
if (combo_size.Items[k].ToString() == Convert.ToString(RTB.Font.Size))
{
combo_size.Text = combo_size.Items[k].ToString();
break;
}
}
}

alishokr
جمعه 05 آذر 1389, 18:16 عصر
سلام.
دوقسمت زیر درست هستن :


foreach (FontFamily fn in FontFamily.Families)
{
comboBox1.Items.Add(fn.Name);
}

for (int i = 2; i <= 100; i += 2)
{
combo_size.Items.Add(i);
}


ولی در کد


for (int j = 0; j <= combo_font.Items.Count - 1; j++)
{
if (combo_font.Items[j].ToString() == RTB.Font.Name)
{
combo_font.Text = combo_font.Items[j].ToString();
break;
}
}


به این شکل عمل کنید:


for (int j = 0; j <= combo_font.Items.Count - 1; j++)
{
if (combo_font.Items[j].ToString() == RTB.Font.Name)
{
combo_font.SelectedIndex = j;
break;
}
}


و کد بعدی رو بصورت زیر عوض کنید:


for (int k = 0; k <= combo_size.Items.Count - 1; k++)
{
if ((int)combo_size.Items[k] == RTB.Font.Size)
{
combo_size.SelectedIndex = k;
break;
}
}


با آرزوی موفقیت ...

iran_sky
دوشنبه 08 آذر 1389, 00:31 صبح
سلام دوست عزیز
اینم برنامه بازم جواب نداد