رویداد کلیک picturebox در C#
سلام
من برنامه ای دارم که با کلیک روی یه لیبل , یک تصویر رو از دیتابیس میاره در picturebox1 .
حالا من میخام وقتی روی picturebox1 کلیک کنم ، عکس موجود توی picturebox1 توسط windows photo viewer نمایش داده بشه .
برای اینکار از کد زیر استفاده کردم اما جواب نداده . برنامه خطایی نمیده اما هیچ اتفاقی هم با کلیک روی picturebox1 نمی افته :
private void pictureBox1_Click(object sender, EventArgs e) {
if (pictureBox1.Tag != null)
{
System.Diagnostics.Process imageViewerProcess = new System.Diagnostics.Process();
imageViewerProcess.StartInfo.CreateNoWindow = false;
imageViewerProcess.StartInfo.FileName = "rundll32.exe";
imageViewerProcess.StartInfo.Arguments =
@"C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullsc reen "
+ pictureBox1.Tag.ToString();
imageViewerProcess.Start();
}
با توجه به اینکه ویندوز من 7 و 64 بیت هست از مسیر C:\Windows\SysWOW64 هم به جای C:\WINDOWS\System32 استفاده کردم اما در نتیجه هیچ تغییری ایجاد نشد و برنامه همچنان کار نمیکنه . لطفا راهنمایی کنید .. ممنون
نقل قول: رویداد کلیک picturebox در C#
سلام دوست عزیز
ابتدا Using زیر رو در فرمی که میخوای اینکارو انجام بدی وارد کن
using System.Diagnostics;
بعد از کد زیر استفاده کن
Process.Start(@"C:\Image.jpg");
روی ویندوز من که 8.1 ورژن 64bit هست اجرا شد
بازم مشکلی بود درخدمتم
نقل قول: رویداد کلیک picturebox در C#
ممنون از لطفت . کدی که نوشتید میدونم که کار میکنه . مساله اینه که من نمیخوام مسیر بدم . بلکه میخوام تصویری که در picturebox نمایش داده میشه رو در windows photo viewer نمایش بدم .
نقل قول: رویداد کلیک picturebox در C#
دوست عزیز شما ابتدا باید تصویر رو روی کامپیوتر ذخیره کنین، بعد اقدام به ادرس دهی کنین، در ضمن توی picturebox.tag چی نوشته شده؟
نقل قول: رویداد کلیک picturebox در C#
نقل قول: رویداد کلیک picturebox در C#
سلام جناب سیروان . تصویر در کامپیوتر ذخیره شده هست . با کلیک روی یک لیبل ، من تصویری رو که قبلا در پوشه scan ( که خود این پوشه در داخل پوشه debug هست) ، در picturebox1 نمایش ( در واقع پیش نمایش) میکنم . من میخوام این امکان رو ایجاد کنم که کاربر با کلیک روی picturebox1 تصویر رو از طریق windows photo viewer تمام صفحه کنه . در واقع مسیری که تصاویر من قرار دارن به طور ثابتی در مسیر (debug\scan) هست . اما مساله همینجاست .. در واقع من میتونم کار دیگه ای هم بکنم . اینکه نام عکس رو به عنوان text یک لیبل قرار بدم . و اون روی از پوشه scan با استفاده از windows photo viewer نمایش بدم . اما به شرطی که بتونم از label.text یه عنوان نام عکس استفاده کنم . امیدورام که منظورم رو به درستی رسونده باشم ..
اجازه بدید سوالم رو طور دیگه بپرسم .
من روی یک row از دیتابیسم کلیک میکنم و نام تصویر مربوط به اون row در label1.text قرار میدم . هر سطر از دیتا بیس من تصویر مخصوص خودش رو داره و بالتبع با کلیک روی هر سطر نام تصویر در label1.text تغییر میکنه . حالا خاصیت کلیک label1 رو چطور تعریف کنیم تا عکسی که نامش در label1.text دیده میشه از پوشه scan که داخل پوشه debug هست توسط windows photo viewer نمایش داده بشه .
نقل قول: رویداد کلیک picturebox در C#
منظورتون از اینکه توی picturebox.tag چی نوشته ، چی هست ؟ من این رو متوجه نمیشم و شاید اشکال کار همینجا باشه
نقل قول: رویداد کلیک picturebox در C#
من توی کدتون قسمت ادرس دهی تصویر رو نمیبینم، کجا ادرس تصویر رو میدین به photo viewer؟
جواب پست بعدی:
منظورم اینه مقدار pictureBox1.Tag چی هست؟
نقل قول: رویداد کلیک picturebox در C#
picturebox1.tag رو چطور مقدار دهی میکنن ؟ از کجا باید ببینم که مقدار picturebox.tag چی هست ?
نقل قول: رویداد کلیک picturebox در C#
شما از این کد استفاده کنین:
string photoViewerPath = Environment.GetFolderPath(Environment.SpecialFolde r.ProgramFiles);
// create our startup process and argument
var psi = new System.Diagnostics.ProcessStartInfo(
"rundll32.exe", String.Format("\"{0}{1}\", ImageView_Fullscreen {2}", Environment.Is64BitOperatingSystem ? photoViewerPath.Replace(" (x86)", "") : photoViewerPath,
@"\Windows Photo Viewer\PhotoViewer.dll", "آدرس کامل تصویر"));
psi.UseShellExecute = false;
System.Diagnostics.Process.Start(psi);
نقل قول: رویداد کلیک picturebox در C#
اگر مسئله فول اسکرین بودن هست، میتونید یک فرم ایجاد کنید با یک پیکچرباکس، در زمان نیاز عکس رو در این فرم نمایش و تمام صفحه کنید.
در هر صورت، وقتی نام عکس در لیبل موجود هست ، کافیه طبق پست2 همین تاپیک، آدرس رو در یک پروسس باز کنید.