C# - Bubble Sort Algorithm

Posted by ေတဇာလင္း Friday 30 December 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမမ်ားအားလံုး မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ VS C# ကို အသံုးျပဳၿပီး Sorting Algorithms ေတြထဲက တစ္ခုျဖစ္တဲ့ Bubble Sort အေၾကာင္းေလးကို ေလ့လာၾကည့္ၾကပါ့မရ္ဗ်။ အေပၚကပံုကေတာ့ Bubble Sort Algorithm အလုပ္ လုပ္သြားတဲ့ ပံုစံပဲျဖစ္ပါတရ္။ အေပၚပံုမွာျမင္ရတဲ့အတိုင္း ကိန္းစဥ္တန္း ငါးလံုးရွိရင္ Loop Step ငါးခုရွိမွာျဖစ္ပါတရ္။ Step တစ္ခုစီတိုင္းမွာ ကပ္လွ်ပ္ ကိန္းစဥ္တန္းႏွစ္လံုးကို ႏႈိင္းယွဥ္ၿပီး ငယ္စဥ္ႀကီးလိုက္အတြက္ ေနာက္ကိန္းကငယ္ေနလွ်င္ေရွ႕ကိန္းနဲ႔ေနရာခ်ိန္းပါတရ္။ ေနာက္ကိန္းကႀကီးေနရင္ေတာ့ ဒီအတိုင္းပဲ ျပန္စီပါတရ္ဗ်။ ဒီနည္းအတုိင္းပဲ ကိန္းစဥ္တန္းဆံုးတဲ့အထိ ကပ္လွ်ပ္ႏွစ္လံုးစီ ႏႈိင္းယွဥ္ၿပီး ေနရာအခ်ိန္းအေျပာင္းလုပ္ပါတရ္။ Step တစ္ခုဆံုးတဲ့အခ်ိန္မွာ ကိန္းစဥ္တန္းရဲ႕ ေနာက္ဆံုးကို ေရာက္သြားတဲ့ ကိန္းဟာ အႀကီးဆံုးကိန္း ျဖစ္ေနမွာပါ။ ဒါေၾကာင့္ Step 1 ၿပီးတဲ့အခ်ိန္မွာ ေနာက္ဆံုး ကိန္းဟာ အႀကီးဆံုးကိန္း၊ Step 2 ဆံုးတဲ့အခါ ေနာက္ဆံုး ကိန္းႏွစ္လံုးဟာ Sort လုပ္ၿပီးသား အႀကီးဆံုးကိန္းျဖစ္ေနမွာပါ။ ဒီနည္းအတိုင္း ကိန္းစဥ္တန္းအားလံုး Sort လုပ္ၿပီးသည္အထိ Step သြားၿပီး Loop လုပ္ ႏႈိင္းယွဥ္ပါတရ္ဗ်ာ။ အေပၚက ပံုကို ၾကည့္လုိက္ရင္ေတာ့ က်ေနာ္ ဘာကို ဆိုလိုေနတရ္ဆုိတာကို နားလည္ႏိုင္ၾက လိမ့္မရ္လို႔ ထင္ပါတရ္။
ဒါကေတာ့ က်ေနာ္ရဲ႕ ေလ့လာၾကည့္မဲ့ Bubble Sort အတြက္ GUI ပါ။ DataGridView ထဲကို Array Set လုပ္တာကိုေတာ့ ေရွ႕က Insertion Sort သင္ခန္းစာမွာ ရွင္းျပခဲ့ၿပီးျဖစ္လို႔ မရွင္းေတာ့ပါဘူးဗ်ာ။ private void txtSetColumn_TextChanged(object sender, EventArgs e){ ...} မွာ Coding ေလး ၾကည့္လိုက္ပါ။
ေနာက္တစ္ခုကေတာ့ Bubble Sort ကို က်ေနာ္ Method ခြဲေရးထားတဲ့ ပံုစံပါ။ public int[] BubbleSorted(int[] arr, string Opt){...} မွာ Coding ေလး ေလ့လာၾကည့္ပါအံုးဗ်။
Method ကို Calling လုပ္တဲ့ ပံုစံကိုေတာ့ private void btnBubbleSort_Click(object sender, EventArgs e) {...} မွာေ လ့လာႏိုင္ပါတရ္။
Result ပံုေလးနဲ႔ Bubble Sort ရဲ႕ အလုပ္ လုပ္ပံုေလးကို သိၿပီဆိုရင္ေတာ့ က်ေနာ္တို႔ ပိုၿပီး နားလည္သြားေအာင္ ေအာက္မွာ Coding အျပည့္အစံုေလးကို ေလ့လာၾကည့္ၾကမရ္ဗ်ာ။
using System;
using System.Windows.Forms;
namespace BubbleSort
{
    public partial class frmBubbleSort : Form
    {
        public frmBubbleSort()
        {
            InitializeComponent();
        }

        private void txtSetColumn_TextChanged(object sender, EventArgs e)
        {
            if (txtSetColumn.Text != "") {
                //For Row of UnSorted-DataGridView
                dgvUnSort.RowTemplate.Height = 35;
                dgvUnSort.RowCount = 1;
                dgvUnSort.RowHeadersVisible = false;
                //For Column of UnSorted-DataGridView
                dgvUnSort.ColumnCount = int.Parse(txtSetColumn.Text);
                dgvUnSort.AllowUserToResizeColumns = true;
                dgvUnSort.ColumnHeadersVisible = false;
                for (int i = 0; i < dgvUnSort.ColumnCount; i++) {
                    dgvUnSort.Columns[i].Width = 35;
                }

                //For Row of Sorted-DataGridView
                dgvSort.RowTemplate.Height = 35;
                dgvSort.RowCount = 1;
                dgvSort.RowHeadersVisible = false;
                //For Column of Sorted-DataGridView
                dgvSort.ColumnCount = int.Parse(txtSetColumn.Text);
                dgvSort.AllowUserToResizeColumns = true;
                dgvSort.ColumnHeadersVisible = false;
                for (int i = 0; i < dgvSort.ColumnCount; i++) {
                    dgvSort.Columns[i].Width = 35;
                }
            } else {
                dgvUnSort.Rows.Clear();
                dgvSort.Rows.Clear();
            }
        }

        private void btnBubbleSort_Click(object sender, EventArgs e)
        {
            //Set Default Sorting Option
            if (cbSortOption.SelectedIndex == -1) {
                cbSortOption.Text = "ASC";
            }
            //Load Data to Array[] from DataDridView
            int length = dgvUnSort.ColumnCount;
            int[] UnSortedArr = new int[length];
            for (int i = 0; i < length; i++) {
                UnSortedArr[i] = int.Parse(dgvUnSort.Rows[0].Cells[i].Value.ToString());
            }
            //Call BubbleSort Method
            int[] SortedResult = BubbleSorted(UnSortedArr, cbSortOption.Text);
            //Add Sorted Data to DataGridView
            for (int i = 0; i < SortedResult.Length; i++) {
                dgvSort.Rows[0].Cells[i].Value = SortedResult[i];
            }
        }

        public int[] BubbleSorted(int[] arr, string Opt)
        {
            int length = arr.Length;
            switch (Opt)
            {
                case "ASC" :
                    for (int i = 0; i < length; i++) {
                        for (int j = 0; j < length-1 - i ; j++) {
                            if (arr[j] > arr[j+1]) {
                                int key = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = key;
                            }
                        }
                    }
                    return arr;

                case "DESC":
                    for (int i = 0; i < length; i++) {
                        for (int j = 0; j < length - 1 - i; j++) {
                            if (arr[j] < arr[j + 1]) {
                                int key = arr[j];
                                arr[j] = arr[j + 1];
                                arr[j + 1] = key;
                            }
                        }
                    }
                    return arr;

                default:
                    return null;
            }           
        }
    }
}

နားလည္ႏိုင္ၾကလိမ့္မရ္လို႔ ေမ်ာ္လင့္ပါတရ္ဗ်။ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစ။

C# - Insertion Sort Algorithm

Posted by ေတဇာလင္း Thursday 29 December 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမမ်ားအားလံုး မဂၤလာပါဗ်ာ။ က်ေနာ္တို႔ ဒီေန႔ေတာ့ VS C# ကို အသံုးျပဳၿပီး Sorting Algorithms ေတြထဲက တစ္ခုျဖစ္တဲ့ Insertion Sort အေၾကာင္းေလးကို Coding ေလးေရးၿပီး ေလ့လာၾကည့္ၾကပါမရ္။
အေပၚက ပံုကေတာ့ Insertion Sort အလုပ္ လုပ္သြားတဲ့ ပံုစံပါ။ က်ေနာ့္ Website ေလးျဖစ္တဲ့ programmingknowledge.blogspot.com မွာ Insertion Sort အေၾကာင္းကို သီအုိရီနဲ႔ႏြယ္ၿပီး အနည္းငရ္ ရွင္းျပခဲ့ၿပီးပါၿပီ။ မိတ္ေဆြတို႔ ေလ့လာႏိုင္ပါတရ္ဗ်။ ဒါေၾကာင့္ ဒီေန႔ ေလ့က်င့္ခန္းမွာ က်ေနာ္ အေသးစိတ္မရွင္းေတာ့ပဲ Code Flow ေလးနဲ႔ Screen Shoot ေလးေတြပဲ ျပပါ့မရ္ဗ်။ Coding Flow ကိုေတာ့ ေလ့လာၾကည့္မရ္ဆိုရင္ေတာ့ အဆင့္(၄)ဆင့္နဲ႔ ေတြ႔ရမွာပါ။ အဆင့္(၁)။ မိမိႏွစ္သက္ရာ Columns အေရအတြက္ကို သက္မွတ္ၿပီး DataGridView မွာ Array[ ] အတြက္ Table တစ္ခု တည္ေဆာက္ယူမွာျဖစ္ပါတရ္။ အဆင့္(၂)။ ဖန္တီးထားေသာ UnSorted Table မွာ မိမိႏွစ္သက္ရာ Array[ ] အတြက္ ကိန္းစဥ္တန္းတစ္ခုကို ရိုက္ထည့္ပါ့မရ္။ အဆင့္(၃)။ ဒီအဆင့္မွာေတာ့ Sorting Option ကို ေရြးခ်ယ္ၿပီး Insertion Sort Btn ကိုႏွိပ္ကာ Sorting လုပ္ေဆာင္ယူမွာျဖစ္ပါတရ္။ အဆင့္(၄)။ ဒါဆိုရင္ေတာ့ က်ေနာ္တို႔ ေျပာင္းလဲယူလိုက္တဲ့ Sorting လုပ္ၿပီးသား Array[] တစ္ခုကို Sorted DataGridView မွာျမင္ရမွာျဖစ္ပါတရ္ဗ်ာ။ ဒီေလ့က်င့္ခန္းမွာ Sorting ကို သီးသန္႔ Method ခြဲၿပီး ေရးထားပါတရ္။ ဒီမွာ မိတ္ေဆြတို႔ တစ္ခု သတိထားရမွာေတာ့ က်ေနာ္တို႔ ဖန္တီးထားတဲ့ Sorting Method က Array[] ကို Parameter Passing လုပ္ထားၿပီး Array[] ကိုပဲ return ျပန္ထားတဲ့အတြက္ေၾကာင့္ Sorting Method ကို ေခၚမသံုးခင္ မိမိ Sort လုပ္ခ်င္ေသာ ကိန္းစဥ္တန္းကို Array[] တစ္ခုအျဖစ္ အရင္ ဖန္တီးယူရမွာျဖစ္ပါတရ္ဗ်။ public int[] InsertSort(int[] arr, string Opt){ ... } ဒါက Insertion Sort ရဲ႕ Method ပါ။ int[] SortedArr = InsertSort(Array, "ASC/DESC"); ဒါကေတာ့ Calling ပံုစံပါ။
Coding အျပည့္အစံုေလးကို ေအာက္မွာ ၾကည့္လိုက္ပါအံုးဗ်ာ။
using System;
using System.Windows.Forms;
namespace InsertionSort
{
    public partial class frmInsertionSort : Form
    {
        public frmInsertionSort()
        {
            InitializeComponent();
        }

        private void txtSetColumn_TextChanged(object sender, EventArgs e)
        {
            if (txtSetColumn.Text != "") {
                //For Row of UnSorted-DataGridView
                dgvUnSort.RowTemplate.Height = 35;
                dgvUnSort.RowCount = 1;                
                dgvUnSort.RowHeadersVisible = false;
                //For Column of UnSorted-DataGridView
                dgvUnSort.ColumnCount = int.Parse(txtSetColumn.Text);
                dgvUnSort.AllowUserToResizeColumns = true;
                dgvUnSort.ColumnHeadersVisible = false;
                for (int i = 0; i < dgvUnSort.ColumnCount; i++) {
                    dgvUnSort.Columns[i].Width = 35;
                }

                //For Row of Sorted-DataGridView
                dgvSort.RowTemplate.Height = 35;
                dgvSort.RowCount = 1;
                dgvSort.RowHeadersVisible = false;
                //For Column of Sorted-DataGridView
                dgvSort.ColumnCount = int.Parse(txtSetColumn.Text);
                dgvSort.AllowUserToResizeColumns = true;
                dgvSort.ColumnHeadersVisible = false;
                for (int i = 0; i < dgvSort.ColumnCount; i++) {
                    dgvSort.Columns[i].Width = 35;
                }
            }else {
                dgvUnSort.Rows.Clear();
                dgvSort.Rows.Clear();
            }
        }

        private void btnInsertionSort_Click(object sender, EventArgs e)
        {
            //Set Default Sorting Option
            if (cbSortOption.SelectedIndex == -1)
            {
                cbSortOption.Text = "ASC";
            }            
            //Load Data to Array[] from DataDridView
            int length = dgvUnSort.ColumnCount;
            int[] UnSortedArr = new int[length];
            for (int i = 0; i < length; i++){
                UnSortedArr[i] = int.Parse(dgvUnSort.Rows[0].Cells[i].Value.ToString());
            }
            //Call InsertionSort Method
            int[] SortedResult = InsertSort(UnSortedArr, cbSortOption.Text);
            //Add Sorted Data to DataGridView
           for (int i = 0; i < SortedResult.Length; i++)
           {
               dgvSort.Rows[0].Cells[i].Value = SortedResult[i];
           }
        }

        public int[] InsertSort(int[] arr, string Opt) {
            int key, j;
            switch (Opt)
            {                
                case "ASC" :                    
                    for (int i = 1; i < arr.Length; i++){
                        key = arr[i];
                        j = i - 1;
                        while (key < arr[j]  &&  j >= 0){
                            arr[j+1] = arr[j];
                            j = j-1;
                            if (j < 0)
                                break;
                        }
                        arr[j+1] = key;
                    }
                    return arr;

                case "DESC" :                   
                    for (int i = 1; i < arr.Length; i++){
                        key = arr[i];
                        j = i - 1;
                        while (key > arr[j] && j <= arr.Length)
                        {
                            arr[j+1] = arr[j];
                            j = j-1;
                            if (j < 0)
                                break;
                        }
                        arr[j+1] = key;
                    }
                    return arr;

                default :
                    return null;
            }            
        }
     }
}

နားလည္ႏိုင္ၾကလိမ့္မရ္လို႔ ေမ်ာ္လင့္ပါတရ္ဗ်။
မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစ။

C# - How to Change Number To Word in C# ?

Posted by ေတဇာလင္း Tuesday 20 December 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုးပဲ မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ VS C# ကိုအသံုးျပဳၿပီး Number(ကိန္းဂဏန္း)ေတြကို Word(စကားလံုး)ေတြအျဖစ္ ဘရ္လို ေျပာင္းလဲယူႏိုင္မလဲ ဆိုတာေလးကို ေလ့လာၾကည့္ၾကပါ့မရ္။ က်ေနာ္ Method ခြဲေရးၿပီး ဆြဲသံုးတဲ့ နည္းလမ္းေလးနဲ႔ပဲ ေရးထားပါတရ္။ စိတ္၀င္စားတဲ့ ညီအစ္ကို၊ ေမာင္ႏွမမ်ား က်ေနာ္နဲ႔အတူ ေလ့လာၾကည့္လိုက္ၾကပါအံုးဗ်ာ။
using System;
using System.Windows.Forms;
namespace NumberToChar
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public string NumberToWords(long number)
        {
            string words = "";
            if (number == 0){   return "သုည";   }
            if (number < 0){   return "အႏုတ္ " + NumberToWords(Math.Abs(number));   }
            
            if ((number / 100000) > 0){
                words += NumberToWords(number / 100000) + "သိန္း၊ ";
                number %= 100000;
            }

            if ((number / 10000) > 0){
                words += NumberToWords(number / 10000) + "ေသာင္း ";
                number %= 10000;
            }

            if ((number / 1000) > 0){
                words += NumberToWords(number / 1000) + "ေထာင္ ";
                number %= 1000;
            }

            if ((number / 100) > 0){
                words += NumberToWords(number / 100) + "ရာ ";
                number %= 100;
            }

            if (number > 0){
                var unitsMap = new[] { "သုည", "တစ္", "ႏွစ္", "သံုး", "ေလး", "ငါး", "ေျခာက္", "ခုႏွစ္", 
"ရွစ္", "ကိုး", "တစ္ဆယ္", "တစ္ဆယ့္တစ္", "တစ္ဆယ့္ႏွစ္", "တစ္ဆယ့္သံုး", "တစ္ဆယ့္ေလး", "တစ္ဆယ့္ငါး", 
"တစ္ဆယ့္ေျခာက္", "တစ္ဆယ့္ခုႏွစ္", "တစ္ဆယ့္ရွစ္", "တစ္ဆယ့္ကိုး" };
                var tensMap = new[] { "သုည", "တစ္ဆယ့္", "ႏွစ္ဆယ့္", "သံုးဆယ့္", "ေလးဆယ့္",
 "ငါးဆယ့္", "ေျခာက္ဆယ့္", "ခုႏွစ္ဆယ့္", "ရွစ္ဆယ့္", "ကိုးဆယ့္" };

                if (number < 20){
                    words += unitsMap[number];
                }else{
                    words += tensMap[number / 10];
                    if ((number % 10) > 0){
                        words += "-" + unitsMap[number % 10];
                    }
                }
            }
            return words;
        }

        private void btnNoToWord_Click(object sender, EventArgs e)
        {            
            txtWord.Text = NumberToWords(long.Parse(txtNumber.Text)) +"က်ပ္";
        }

        private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
        {
            char ch = e.KeyChar;
            if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
            {
                e.Handled = true;
            }
        }
    }
}
Resutl ကေတာ့ ပံုမွာ ျမင္ေတြ႔ရတဲ့အတုိင္းပါပဲဗ်ာ။ က်ေနာ္တို႔ ေရးထည့္ေပးလိုက္တဲ့ ကိန္းဂဏန္းေတြကို စကားလံုးေတြနဲ႔ ျပန္လည္ေဖာ္ျပေပးမွာျဖစ္ပါတရ္။ Coding မွာ ခက္ခဲတာေတြ မပါ ပါဘူးဗ်ာ။ က်ေနာ္တို႔ Number Conversion ေလ့က်င့္ခန္းေတြတုန္းက ေလ့လာခဲ့တဲ့ ကိန္းစဥ္တန္းတစ္ခုကို မိမိလိုခ်င္သေလာက္ အျပည့္ကိန္းနဲ႔ စား၊ ျဖတ္ထုတ္ၿပီး စာသားခ်ိန္းယူတဲ့ နည္းကို သံုးထားပါတရ္။ တြက္ခ်က္တဲ့အခ်ိန္မွာေတာ့ မိမိ Function ကို Funciton Body အတြင္းမွပဲ ထပ္ခါတလဲလဲ ျပန္ေခၚသံုးတဲ့ Function Recursion နည္းလမ္းကို အသံုးျပဳထားပါတရ္။ TextBox မွာ KeyPress Event ကိုအသံုးျပဳထားတာကေတာ့ က်ေနာ္တို႔ TextBox အတြင္းကို 0-9 digit ေတြနဲ႔ BackSpace Key, Delete Key တို႔ကို သီးသန္႔ အသံုးျပဳႏိုင္ေအာင္လို႔ ျဖည့္စြပ္ထားတာပါ။ မိတ္ေဆြတို႔အေနနဲ႔ မႀကိဳက္ရင္ မသံုးပဲ ေနႏိုင္ပါတရ္။ ဒါဆိုရင္ေတာ့ TextBox အတြင္းကို Number ေတြရိုက္ထည့္တဲ့အခါ သတိထားရမွာျဖစ္ၿပီး အျခားမဆိုင္တဲ့ Character ေတြ ပါလာခဲ့ရင္ေတာ့ Function ကိုျဖတ္တဲ့အခါ အလုပ္ မလုပ္ႏိုင္ပဲ Error ျဖစ္သြားမွာပဲျဖစ္ပါတရ္။
ဒီေလ့က်င့္ခန္းမွာေတာ့ က်ေနာ္ အႏုတ္ Key ရိုက္မရေအာင္ KeyPress Event မွာ ပိတ္ထားပါတရ္။ ဒါေပမဲ့ အေပၚမွာ အႏုတ္ Number ရိုက္ထည့္ရင္လည္း အလုပ္ လုပ္ေၾကာင္း ပံုနဲ႔ ျပထားပါတရ္ဗ်။ မိတ္ေဆြတို႔ အႏုတ္ကိန္းေတြပါ စာသားအျဖစ္ေျပာင္းခ်င္တရ္ဆိုရင္ေတာ့ TextBox_KeyPress Event ကို မသံုးပဲ Off ထားႏိုင္ပါတရ္။ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစဗ်ာ။

How to Create & Use DLL File in C# ?

Posted by ေတဇာလင္း Saturday 17 December 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ Microsoft Visual Studion C# ကိုအသံုးျပဳၿပီးေတာ့ DLL File တစ္ခုကို ဘရ္လို ဖန္တီးယူႏိုင္မလဲ၊ ဘရ္လိုျပန္လည္ၿပီး ေခၚယူ အသံုးျပဳႏိုင္မလဲ ဆိုတာနဲ႔ ပတ္သတ္ၿပီး ေဆြးေႏြးေပးသြားပါ့မရ္။ Dll ဆိုတာကေတာ့ Dynamic Link Library ရဲ႔ အတိုေကာက္ စကားလံုးျဖစ္ပါတရ္။ Library File ဆိုတာနဲ႔တင္ ကုဒ္တင္းကို တီးမိေခါက္မိ သူေတြအေနနဲ႔ေတာ့ အသံုးခ်ႏိုင္မႈနဲ႔ စြမ္းေဆာင္ရည္ကို သိေနေလာက္ၿပီလို႔ ထင္ပါတရ္။
က်ေနာ္ အနည္းငရ္ေျပာရရင္ Dll ဆိုတာ Programming Language အသီးသီးအတြက္ IDE နဲ႔ Writer အၾကား Coding Flow ကုိ Convert လုပ္ေပးႏိုင္တဲ့ File တစ္ခုပါ။ အက်ိဳးသက္ေရာက္မႈကေတာ့ ေျပာမျပႏိုင္ေလာက္ေအာင္ပါပဲ။ က်ေနာ္တို႔ VS မွာ C# ကို အသံုးျပဳၿပီး Project တစ္ခုေရးမရ္ဆိုပါစို႔။ အေျခခံ အက်ဆံုး Text ေတြ၊ Label ေတြ၊ Button ေတြ အစရွိတဲ့ Tools ေတြကို က်ေနာ္တို႔ မျဖစ္မေနကို အသံုးျပဳ ရမွာပါ။ က်ေနာ္တို႔ ဒီလို အသံုးျပဳႏိုင္ဖုိ႔ IDE Creater ေတြက အမ်ိဳးမ်ိဳးေသာ Functions ေတြအတြက္ Library File ေတြကို ထည့္သြင္း ေပးထားရပါတရ္။ ဒါမွသာ Writer ေတြအတြက္ မဆင္ေျပမရ္မဟုတ္လားဗ်။ ဥပမာ ေျပာရရင္ က်ေနာ္တို႔ Form အစရွိတဲ့ Text, Label, Button ေတြ အသံုးျပဳႏိုင္ဖို႔အတြက္ using System.Windows.Forms; ဆိုတဲ့ Library dll file အသံုးျပဳေပးရပါတရ္။ Graphic သမားေတြအတြက္ Line, Circle, Shape,... အစရွိတဲ့ ဖန္တီးမႈေတြ လုပ္ေဆာင္ႏိုင္ဖို႔အတြက္ using System.Drawing.Drawing2D; ဆိုတဲ့ Library File ကိုအသံုးျပဳရပါတရ္။ ဒီလိုပါပဲ။ မိတ္ေဆြတို႔အေနနဲ႔ File and Directory ေတြကို Read, Write, Create,... စတာေတြ လုပ္ခ်င္ပါသလား။ using System.IO; ဆိုတဲ့ Library File ကိုအသံုးျပဳရပါတရ္။ အျခားလည္း အမ်ားႀကီးပါပဲဗ်ာ။ က်ေနာ္ ဒီေလာက္ပဲ ေျပာပါရေစ။
ဒီမွာ က်ေနာ္အေနနဲ႔ သိေစခ်င္တာက Library File ကိုအသံုးျပဳျခင္းျဖင့္ Writer သို႔မဟုတ္ Programmer တစ္ေယာက္အေနနဲ႔ Coding ကို အေသးစိတ္ စဥ္းစားစရာမလို၊ ကိုယ္တိုင္ဖန္တီး စရာမလို၊ ထပ္ခါတလဲလဲ ေရးေနစရာမလိုပဲ မိမိစိတ္ကူးကို အခ်ိန္တိုအတြင္းမွာ ဖန္တီးယူႏိုင္တရ္ဆိုတာပါပဲဗ်ာ။ ဒါဆို ဒီေလာက္ အက်ိဳးသက္ေရာက္မႈ အားေကာင္းတဲ့ library file ကို ကိုယ္တိုင္ေရာ ဖန္တီးယူလို႔ မရႏိုင္ဘူးလားလို႔ ေမးစရာရွိလာပါတရ္။ က်ေနာ္အေနနဲ႔ ေျပာရရင္ Programming Language တိုင္းအတြက္ ရပါတရ္ဗ်ာ။ ဒီေလ့က်င့္ခန္းမွာေတာ့ က်ေနာ္ VS C# ကိုအသံုးျပဳၿပီး 0 to 9 Number ေတြကို ျမန္မာကေနအဂၤလိပ္၊ အဂၤလိပ္ကေနျမန္မာ သို႔ ေျပာင္းလဲႏိုင္ဖို႔အတြက္ Dll file ဖန္တီးၿပီး ျပန္လည္အသံုးခ် ႏိုင္တာေလးကို ေဆြးေႏြး ေပးသြားပါ့မရ္။ စိတ္၀င္စားတဲ့ မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမမ်ားအားလံုး က်ေနာ္နဲ႔အတူ ေလ့လာၾကည့္ၾက အံုးစို႔ဗ်ာ။

အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုး မဂၤလာပါဗ်ာ။ စာေတြလည္း မတင္ျဖစ္တာ ၾကာၿပီဗ်ိဳ႕။ စိတ္မပါတာေရာ၊ မအားမလပ္တာေရာေပါ့ဗ်ာ။ ဒီေန႔ေတာ့ တင္ေနၾက ပံုစံမဟုတ္ပဲ အဆဲခံထိ(ျပည့္သူ႔ေမတၱာခံယူ)လိုက္အံုးမရ္။ က်ေနာ္ 2013-2014 ေလာက္က ၀တၱဳတိုေလးတစ္ပုဒ္ ေရးမိထားတာရွိတရ္ဗ်။ ဒါေလး တင္လိုက္မရ္ဗ်ာ။ မိတ္ေဆြတို႔ ဖတ္ရႈေပးၿပီး ေ၀ဖန္ေပးၾကပါအံုး။

အားလံုးအဆင္ေျပ ေခ်ာေမြ႕နိုင္ၾကပါေစ။