چند مشکل در #c

mahtab2009

Member
سلام
جند تا مشکل تو کدهای #C دارم، لطفا راهنماییم کنید.
1- مگه برای Query Select وقتی می خواهیم کلماتی مشابه با آنچه تایپ می کنیم نمایش داده بشه نباید بنویسیم :
کد:
OleDbCommand com=new OleDbCommand("SELECT  English_Word FROM English WHERE English_Word LIKE '%"+txt_word.Text+"%'",con);
توی TextChange هم نوشته میشه. اگه درسته چرا برای من جواب نمیده و هیچ چیز به نمایش در نمیاد؟؟؟
2-برای نوشتن برنامه paint از Bitmap استفاده کردم و اونو به picturebox.image نسبت دادم و کد زیر رو برای save نوشتم. پنجره save باز میشه و همه چیز درسته، فرمتی که می خوام رو انتخاب کرده و یه اسم میدم و کلید save رو میزنم ولی وقتی میرم تو فولدر مورد نظر هیچی اونجا نیست اصلا چیزی save نشده.
کد:
private void savefile_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "JPEG (*.jpg)|*.jpg|PNG (*.png)|*.png|GIF (*.gif)|*.gif|Bitmap (*.bmp)|*.bmp|TIFF (*.tiff)|*.tiff";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                switch (Path.GetExtension(saveFileDialog1.FileName))
                {
                    case "jpg":
                        pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
                        break;
                    case "png":
                        pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Png);
                        break;
                    case "gif":
                        pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Gif);
                        break;
                    case "bmp":
                        pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
                        break;
                    case "tiff":
                        pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Tiff);
                        break;
                }
            }

        }
3-برای نوشتن کد مداد مشکل دارم ، کدی که نوشتم اینه(هم توی MouseMove و هم توی MouseClick):
کد:
if (e.Button == MouseButtons.Left)
                                {
                                    lb = new LinearGradientBrush(new Rectangle(0, 0, 5, 5), foreground.BackColor, foreground.BackColor, LinearGradientMode.BackwardDiagonal);
                                    g.FillEllipse(lb, (float)e.X - (p.Width / 2), (float)e.Y - (p.Width / 2), p.Width, p.Width);
                                }
مسئله اینه که تا وقتی دستم روی کلیک چپ ماوسه یه نقطه همراه ماوس حرکت میکنه تا MouseUp اتفاق بیفته، اصلا انگار نه انگار که من توی MouseMove هم چیزی نوشتم.
4- برای delete کردن اینو نوشتم:
کد:
private void del_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Do you want to remove image?", "Remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                pic = new Bitmap(pictureBox1.Width, pictureBox1.Height);
                g = Graphics.FromImage(pic);
                g.FillRectangle(Brushes.White, new Rectangle(0, 0, pic.Width, pic.Height));
                pictureBox1.Image = pic;
            }
        }
وقتی delete میکنم صفحه سفید به نمایش در میاد ولی دیگه نمیشه روی اون کلیک کرده و چیزی رسم کرد. همین کد رو برای new می نویسم و هیچ مشکلی نیست ولی برای del تا روی صفحه کلیک می کنم به طور مداوم این پیغام ظاهر میشه :
Object reference not set to an instance of an object

خیلی خیلی ممنون میشم کمکم کنید.
 

the_king

مدیرکل انجمن
سلام
جند تا مشکل تو کدهای #C دارم، لطفا راهنماییم کنید.
1- مگه برای Query Select وقتی می خواهیم کلماتی مشابه با آنچه تایپ می کنیم نمایش داده بشه نباید بنویسیم :
کد:
OleDbCommand com=new OleDbCommand("SELECT  English_Word FROM English WHERE English_Word LIKE '%"+txt_word.Text+"%'",con);
توی TextChange هم نوشته میشه. اگه درسته چرا برای من جواب نمیده و هیچ چیز به نمایش در نمیاد؟؟؟
شما یک OleDbCommand ساخته اید، درست، اما ساختن دستور به تنهایی که کاری انجام نمیده، شما می توانید
هزار تا دستور بسازید اما تا اجرایشان نکنید که اتفاقی نمی افته. باید اجرایش کنید و سپس نتیجه Select را که
یک تیبل یا کوئری است در یک جایی بکار ببرید.

2-برای نوشتن برنامه paint از Bitmap استفاده کردم و اونو به picturebox.image نسبت دادم و کد زیر رو برای save نوشتم. پنجره save باز میشه و همه چیز درسته، فرمتی که می خوام رو انتخاب کرده و یه اسم میدم و کلید save رو میزنم ولی وقتی میرم تو فولدر مورد نظر هیچی اونجا نیست اصلا چیزی save نشده.
تابع Path.GetExtension پسوند ها رو همراه با نقطه بر می گردونه، مثلا "jpg." ، در کد شما case ها نقطه ندارند
و در نتیجه شامل هیچکدوم نمیشه. در ضمن نیازی به case ها نیست که پارامتر دوم رو مشخص می کنید،
اگر ImageFormat رو مشخص نکنید Image.Save بر اساس پسوند فایل خودش فرمت مناسب رو انتخاب می کنه.

3-برای نوشتن کد مداد مشکل دارم ، کدی که نوشتم اینه(هم توی MouseMove و هم توی MouseClick):
کد:
if (e.Button == MouseButtons.Left)
                                {
                                    lb = new LinearGradientBrush(new Rectangle(0, 0, 5, 5), foreground.BackColor, foreground.BackColor, LinearGradientMode.BackwardDiagonal);
                                    g.FillEllipse(lb, (float)e.X - (p.Width / 2), (float)e.Y - (p.Width / 2), p.Width, p.Width);
                                }
مسئله اینه که تا وقتی دستم روی کلیک چپ ماوسه یه نقطه همراه ماوس حرکت میکنه تا MouseUp اتفاق بیفته، اصلا انگار نه انگار که من توی MouseMove هم چیزی نوشتم.
قبلا این مشکل رو داشتید که وقتی می خواستید کادری رسم کنید، هنگام جابجایی ماوس جایش می ماند.
مشکل آنرا با یک Bitmap اضافی pic2 حل کردیم. حالا شما دارید روی pic2 با مداد طرح می زنید در حالی که ماوس
که جابجا شد این pic قبلی است که از نو نشان داده می شود، نه pic2. باید رسم رو به pic کپی کنید :
کد:
                                if (e.Button == MouseButtons.Left)
                                {
                                    lb = new LinearGradientBrush(new Rectangle(0, 0, 5, 5), foreground.BackColor, foreground.BackColor, LinearGradientMode.BackwardDiagonal);
                                    g.FillEllipse(lb, (float)e.X - (p.Width / 2), (float)e.Y - (p.Width / 2), p.Width, p.Width);
                                    g.Flush();
                                    pic = (Bitmap)pic2.Clone();
                                }

4- برای delete کردن اینو نوشتم:
وقتی delete میکنم صفحه سفید به نمایش در میاد ولی دیگه نمیشه روی اون کلیک کرده و چیزی رسم کرد. همین کد رو برای new می نویسم و هیچ مشکلی نیست ولی برای del تا روی صفحه کلیک می کنم به طور مداوم این پیغام ظاهر میشه :
Object reference not set to an instance of an object

خیلی خیلی ممنون میشم کمکم کنید.
ظاهرا باید تکلیف کد تون رو مشخص کنید، بخشی از کد تون از BackgroundImage استفاده می کنه و بخشی
از Image، زمانی که شما Image بزرگی دارید که کل pictureBox1 رو با رنگ سفید می پوشونه دیگه از
BackgroundImage چیزی دیده نمیشه. در ضمن Flush کردن Graphics رو قبل از بکار بردن Bitmap فراموش نکنید.
وقتی پردازنده سرش خلوته وجودش به ظاهر اضافی یه اما همیشه اینطور نیست.
 

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

بالا