ডাব্লুপিএফ উইন্ডোটিতে হ্যান্ডেলটি সন্ধান করা হচ্ছে


109

উইন্ডোজ ফর্মগুলির একটি সম্পত্তি উইন 1 ছিল and হ্যান্ডল কোনটি, যদি আমি মনে করি, মূল উইন্ডোটির হ্যান্ডেলটি ফেরত দেয়?

ডাব্লুপিএফ উইন্ডোটির হ্যান্ডেল পাওয়ার জন্য কি সমমানের উপায় আছে?

আমি নিম্নলিখিত কোডটি অনলাইনে পেয়েছি,

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

তবে আমি মনে করি না যে এটি আমাকে সাহায্য করবে কারণ আমার অ্যাপ্লিকেশনটিতে একাধিক উইন্ডোজ রয়েছে।

ধন্যবাদ !!


24
ইভান, আমি আপনাকে কিছু বন্ধুত্বপূর্ণ পরামর্শ দিতে দিন। কার্গো কাল্ট প্রোগ্রামিং করবেন না! অনলাইনে আপনি যে কোডটি খুঁজে পেয়েছেন তা বিচ্ছিন্ন করুন। আপনি স্পষ্টভাবে দেখতে পাচ্ছেন যে এটি অ্যাপ্লিকেশন.কন্টেনার.মাইন উইন্ডোকে পাস করে এবং এর থেকে আপনি যুক্তি দিতে পারেন যে এটি অন্য একটি উইন্ডোতে রেফারেন্স দেওয়ার পরে আপনি আপনার উত্তর পেয়ে যাবেন। আমি উইন্ডোআইন্টার্পেহেল্পারটি কখনও ব্যবহার করি নি, তবে তবুও প্রশ্নের উত্তর দিতে সক্ষম হয়েছি কেবল এটি যুক্তিযুক্ত হতে।
গ্রেগরি হিগলে

1
ঠিক বলেছেন, ধন্যবাদ! আমি আজ ক্লান্ত :).
ইভান

5
সমস্যা নেই! এবং আমি এটি সমালোচনা হিসাবে বোঝাতে চাইনি, কেবল সহায়ক হতে। আমরা সবাই এখন এবং তারপরে একটি সামান্য কার্গো-কাল্টিং করেছি। :)
গ্রেগরি হিগলি 19

উত্তর:


142

ভাল, Application.Current.MainWindowপাস করার পরিবর্তে , আপনি যে উইন্ডোটি চান তা কেবল একটি রেফারেন্স দিন: new WindowInteropHelper(this).Handleএবং আরও কিছু।


আমি সবেমাত্র আবিষ্কার করেছি যে ফাইলসাইভ সাধারণ ডায়ালগটি একটি শীর্ষ-স্তরের উইন্ডোতে একটি রেফারেন্স নিয়েছে, যাতে আপনি অ্যাপ্লিকেশনটির মেইন উইন্ডোতে একটি রেফারেন্স পাস করতে পারেন pass আপনার যখন সত্যিই প্রয়োজন তখন ইন্টারপ পরিষেবাগুলি সংরক্ষণ করুন।
ডেভিড এ। গ্রে

39

উইন্ডোজআইন্টার্পেহেল্পার ক্লাসের সাহায্যে আপনার উইন্ডোটি কেবল ব্যবহার করুন:

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

এখনই, আপনি অ্যাপ্লিকেশনটির মূল উইন্ডোটি চাইছেন, যার মধ্যে সর্বদা একটি থাকবে। আপনি যে কোনও উইন্ডোতে এই একই কৌশলটি ব্যবহার করতে পারেন, তবে এটি প্রদত্ত যে সিস্টেম। উইন্ডো W উইন্ডো থেকে প্রাপ্ত উইন্ডো শ্রেণি class



3

আপনি যদি Windowকোনও কারণে আপনার অ্যাপ্লিকেশনটির সমস্তগুলির জন্য উইন্ডো হ্যান্ডলগুলি চান তবে আপনি সমস্ত উইন্ডোতে Application.Windowsপেতে সম্পত্তিটি ব্যবহার করতে পারেন এবং তারপরে WindowInteropHandlerহ্যান্ডলগুলি পেতে ব্যবহার করতে পারেন যেমন আপনি ইতিমধ্যে প্রদর্শন করেছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.