تایپ کاراکتری غیر از صفحه کلید در سی شارپ

m.h.124

Member
با سلام
با چه ابزاری میشه کاراکتری غیر از کاراکتر های صفحه کلید مثل انتگرال و سیگما و لیمیت(حد) و ... رو داخل تکست باکس تایپ کرد؟
 

the_king

مدیرکل انجمن
با سلام
با چه ابزاری میشه کاراکتری غیر از کاراکتر های صفحه کلید مثل انتگرال و سیگما و لیمیت(حد) و ... رو داخل تکست باکس تایپ کرد؟

ابزار هایی مثل Character Map ویندوز کاراکتر رو برای Paste کردن آماده می کنند، گرچه می توانید برای برنامه خودتان یک ترکیب کلیدی مثل Ctrl + Q در نظر بگیرید که کلید بعدی یکی از نماد های دلخواه شما را تایپ کند،
فرضا Ctrl + Q, X را تایپ کنید و نماد سیگما درج شود. فونت Cambria Match برای نماد های علمی-ریاضی فونت نسبتا کاملی است.

ترکیب کلیدی کلید ویندوز + کلید R را فشار دهید (
WinR.gif
) تا پنجره Run باز بشه، عبارت charmap را بنویسید و OK کنید.
 

m.h.124

Member
چطور میتونم کلید ترکیبی را خودم به یک کاراکتر بدم؟
و آیا می شود با کلیک روی یک پیکچر باکس اون کاراکتر تایپ شود؟
attachment.php

برای بولد کردن و مورب کردن و تغییر سایز فونت داخل تکست باکس طوری که کاربر این کار را انجام دهد، هم ابزاری هست؟
تشکر می کنم.
 

پیوست ها

  • نماد.png
    نماد.png
    22.1 کیلوبایت · بازدیدها: 7

the_king

مدیرکل انجمن
چطور میتونم کلید ترکیبی را خودم به یک کاراکتر بدم؟
کاربرد اصلی Charmap برای برنامه نویسان نیست، اما کمک شان می کند که ببینند یک فونت شامل چه Glyph هایی است و کاراکتر مورد نظرشان رو پیدا کنند
و کد Unicode آن را ببینند. دانستن کد Unicode برای برنامه شما مفید تر است تا Copy/Paste کردن کاراکتر.

اول تصمیم بگیرید که برای برنامه خودتان است یا برای کل ویندوز، چون سه درجه مدیریت رخداد وجود داره، از درجه یک تا درجه سه.
درجه سه اینه که برای رخداد فشار کلید در یک یا چند TextBox کد بنویسید که اگر فلان ترکیب های کلیدی ایجاد شد، فلان کاراکتر را درج کند،
این مختص همان چند TextBox برنامه شما است که برایشان رخداد را اختصاصا مدیریت می کنید.
درجه دو عمومی تر آن است، برای کل یک یا چند فرم برنامه تان این کد را می نویسید. شامل تمامی کنترل هایی می شود که روی فرم تان قرار می گیرند.
درجه یک سراسری و برای کل ویندوز است، کدی می نویسید که کل کلیدی هایی که در ویندوز فشار داده می شوند را پردازش کند و اگر به ترکیب کلیدی
مورد نظرتان رسیدید کاراکتر فلان را جایگزین کند. اینکار مشابه همان روال ساختن Hot Key برای برنامه هایی است که با فشار دادن یک ترکیب کلیدی کاری انجام می دهند.
فرضا برنامه هایی مثل Snagit و Camtasia که موقع فشار دادن کلید Prt Scr یا Print Screen اجرا می شوند و از صفحه عکس می گیرند.

و آیا می شود با کلیک روی یک پیکچر باکس اون کاراکتر تایپ شود؟
اصلا محدودیتی ندارید، هر جور روشی که رخدادی به حساب بیاد قابل اجرا است. برای درج کاراکتر الزامی نیست که واقعا کلیدی فشرده بشه.

در اصل چهار روش برای درج کاراکتر در TextBox هست، روش اول اینه که مستقیما Text اش رو تغییر بدید، مزیت اش اینه که حتی روی TextBox ای که غیر فعاله
یا Focus نداره قابل اجرا است. روش دوم اینه که صبر کنید چیزی داخلش تایپ بشه و بعد در رخداد فشار کلید، قبل از درج کاراکتر، کاراکتر رو عوض کنید، فارسی نویس های
ویندوز 95/98/Me معمولا از این روش استفاده می کردند. روش سوم اینه که کاراکتری رو به بافر صفحه کلید بفرستید، انگار که کاربر کلیدی رو فشار داده بوده، کاربرد اش
زمانی است که سایر روش ها جواب نمیده، مخصوصا روی سایر برنامه ها که بهشون دسترسی مستقیم ندارید جواب میده، برنامه ها نمی توانند فرق اش رو
با فشار واقعی کلید تشخیص دهند. روش چهارم اینه که با SendMessage پیام هایی به TextBox بفرستید که کلیدی فشرده شده، این روش مستقیما از API ویندوز
استفاده می کنه، برای زبان های Net. مزیتی نداره و روی بعضی برنامه ها هم جواب نمیده.

برای بولد کردن و مورب کردن و تغییر سایز فونت داخل تکست باکس طوری که کاربر این کار را انجام دهد، هم ابزاری هست؟
تشکر می کنم.
اگر برای بخشی از متن باشه دیگه TextBox پاسخگو نیست، TextBox برای کل متن یک حالت بیشتر نخواهد داشت، باید از RichTextBox استفاده کنید.
RichTextBox همان کنترلی است که WordPad ویندوز ازش استفاده می کنه، جزو کنترل های استاندارد ویندوز ئه، در #C و کلا Net. در Toolbox هست.
 

m.h.124

Member
با سلام
من قصد دارم برای دو فرم این کار رو انجام بدم.یعنی وقتی کاربر picture box را بفشارد.علامت انتگرال در تکست باکس نمایش داده شود.البته نه به طور همزمان برای دو فرم.فقط برای فرمی که در حال اجرا است.برای این کار باید چه کدی بنویسم؟
ممنون میشم کمک کنید.
 

m.h.124

Member
در مورد سوال آخرم هم یک سوالی داشتم.من در تنظیمات کنترل RichTextBox به تصویر زیر نرسیدم.من هدفم این هست که یک ابزاری شبیه تصویر زیر داشته باشم.ممنون میشم در مورد این سوالم هم راهنماییم بفرمایید.
attachment.php
 

پیوست ها

  • ویرایش متن.png
    ویرایش متن.png
    15.8 کیلوبایت · بازدیدها: 6

the_king

مدیرکل انجمن
در مورد سوال آخرم هم یک سوالی داشتم.من در تنظیمات کنترل RichTextBox به تصویر زیر نرسیدم.من هدفم این هست که یک ابزاری شبیه تصویر زیر داشته باشم.ممنون میشم در مورد این سوالم هم راهنماییم بفرمایید.

خودتان می توانید بسازید، نمونه کد اش هم در اینترنت هست :

مشاهده پیوست RichTextBoxExtended.zip

RichTextBoxExtended - CodeProject

با سلام
من قصد دارم برای دو فرم این کار رو انجام بدم.یعنی وقتی کاربر picture box را بفشارد.علامت انتگرال در تکست باکس نمایش داده شود.البته نه به طور همزمان برای دو فرم.فقط برای فرمی که در حال اجرا است.برای این کار باید چه کدی بنویسم؟
ممنون میشم کمک کنید.

کد:
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            textBox1.SelectedText = "\u222B";
        }

کد:
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            richTextBox1.SelectedText = "\u222B";
        }
 

m.h.124

Member
با سلام
خیلی از شما ممنونم.
یک سوال برام پیش اومده که با وجود سرچ، به نتیجه نرسیدم.در چندین سایت،علائم لازم برای تایپ یک کاراکتر را قسمتی معرفی کرده بودند که در عکس زیر پیوست کرده ام.کدی که شما برای تایپ انتگرال نوشتید، با کلید ترکیبی عکس تفاوت دارد.
ممکنه بفرمایید
\u222B
را از کجا باید ببینیم.
ممنون.
attachment.php
 

پیوست ها

  • نماد.png
    نماد.png
    31 کیلوبایت · بازدیدها: 5

the_king

مدیرکل انجمن
با سلام
خیلی از شما ممنونم.
یک سوال برام پیش اومده که با وجود سرچ، به نتیجه نرسیدم.در چندین سایت،علائم لازم برای تایپ یک کاراکتر را قسمتی معرفی کرده بودند که در عکس زیر پیوست کرده ام.کدی که شما برای تایپ انتگرال نوشتید، با کلید ترکیبی عکس تفاوت دارد.
ممکنه بفرمایید
\u222B
را از کجا باید ببینیم.
ممنون.
attachment.php
خیلی از نماد های شباهت زیادی به هم دارند، حداقل در اندازه های کوچک، اما چیزی که شما پیدا کرده اید از اسم اش مشخصه که اون چیزی که دنبالش هستید نیست.
اون گزینه Group by رو به حالت Unicode Subrange ببرید تا کاراکتر ها رو بر حسب موضوعی مرتب کنه. در پنجره Unicode Subrange گروه Mathematical Operators رو انتخاب کنید
تا فقط نماد های ریاضی رو ببینید. کاراکتر مورد نظر اسمش Integral ئه، الزما همه فونت ها همچین کاراکتری ندارند.

مجموعه Glyph هایی که در هر فونتی هست متفاوته. ممکنه یک کاراکتر رو در یک فونت ای ببینید که در سایر فونت ها نباشه. البته معیار چندان مناسبی نیست اما
بین فونت های مایکروسافت (فونت های ویندوز + فونت های آفیس) فونت Arial Unicode MS بیشترین تعداد Glyph رو داره، با فونت Arial فرق داره و همراه آفیس نصب میشه.
می توانید به Setup برنامه تون اضافه اش کنید.
 

m.h.124

Member
سلام
اگر چند تا rtb داشته باشیم و بخواهیم این علائم در rtb ای که اشاره گر در آن هست تایپ شود، باید چه کار کنیم.چرا کد من کار نمیکنه.
کد:
if (rtbg1.Focus()==true)
            {
               rtbg1.SelectedText = "\u221B";
            }
            else if (rtbques.Focus() == true)
            {
                rtbques.SelectedText = "\u221B";
            }
 

the_king

مدیرکل انجمن
سلام
اگر چند تا rtb داشته باشیم و بخواهیم این علائم در rtb ای که اشاره گر در آن هست تایپ شود، باید چه کار کنیم.چرا کد من کار نمیکنه.
کد:
if (rtbg1.Focus()==true)
            {
               rtbg1.SelectedText = "\u221B";
            }
            else if (rtbques.Focus() == true)
            {
                rtbques.SelectedText = "\u221B";
            }

Focus وضعیت Focus کنترل رو بر نمی گردونه، فرمان Focus گرفتن کنترل ئه، Focus رو به کنترل میده و اگر موفقیت آمیز نبود false بر می گردونه، وقتی شما ()rtbg1.Focus رو اجرا کنید فقط زمانی false دریافت می کنید که به دلیلی Focusable نیست.
یا از rtbg1.Focused استفاده کنید و یا از rtbg1 == ActiveControl که البته اولی گزینه بهتریه.
 

m.h.124

Member
تشکر و یک سوال دیگه:
من چه فونتی را باید نصب کنم برای تایپ درست علائم؟چون اکثر علائم را به صورت مربع نمایش میده.
 

the_king

مدیرکل انجمن
تشکر و یک سوال دیگه:
من چه فونتی را باید نصب کنم برای تایپ درست علائم؟چون اکثر علائم را به صورت مربع نمایش میده.
قاعدتا بستگی به علائم داره، اما همانطور که قبلا اشاره کردم Arial Unicode MS کامل تر از بقیه است.
 

m.h.124

Member
من برای همان گروهی از علائم که شما معرفی کردید می خواستم (شامل اشتراک، اجتماع،مجموعه تهی، عاد کردن و چند مورد دیگه).فونتی که شما معرفی کردید، جواب نمیده.
فونت دیگه ای را می شناسید که معرفی کنید؟
ممنون.
 

the_king

مدیرکل انجمن
من برای همان گروهی از علائم که شما معرفی کردید می خواستم (شامل اشتراک، اجتماع،مجموعه تهی، عاد کردن و چند مورد دیگه).فونتی که شما معرفی کردید، جواب نمیده.
فونت دیگه ای را می شناسید که معرفی کنید؟
ممنون.

همه این نماد هایی که اسم بردید توی Arial Unicode MS هست، Intersection و Union و Empty Set و Divides و ...
 

m.h.124

Member
عجیبه!من این فونت را دارم!
این که به صورت مربع نشون میده، یعنی علت دیگه ای دارد؟
 

the_king

مدیرکل انجمن
عجیبه!من این فونت را دارم!
این که به صورت مربع نشون میده، یعنی علت دیگه ای دارد؟

بالاخره یا از این فونت استفاده نمیشه یا کد کاراکتر اشتباهی بکار برده میشه یا فونت ایراد داره.
یه همچین کدی رو اجرا کنید، ببینید اسم فونت ای که دارید بکار می برید چیه :

کد:
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(textBox1.Font.Name);
        }
 

m.h.124

Member
خیلی ممنون مشکلم حل شد .با اینکه موقع اجرا فونت رو روی Arial Unicode MS میذاشتم .ولی چون قبل از اجرا فونت فرم را روی فونت دیگری میذاشتم،درست کار نمیکرد.
 

جدیدترین ارسال ها

بالا