কিভাবে আপনি "।" সহ সব কী প্রক্রিয়া, একটি DataGridView একটি ComboBox চাইল্ড পেতে পারেন?

নীচে তালিকাভুক্ত পোস্টে বর্ণিত হিসাবে আমি একই সমস্যা আছে। অর্থাৎ, যখন আমি প্রথম স্পেসবারটি আঘাত করি তখন আমার কী-বোর্ডে টাইপ করে কিছু কীগুলি কাজ করে না। একটি কী "।", কিন্তু অন্যটি "Q" অক্ষর, এবং অন্যগুলি আছে: "$", "%"।

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=659716&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2909173&SiteID=1&pageid=0
http://bytes.com/forum/thread548399.html

আমি অনেক কিছু চেষ্টা করেছি পর্যন্ত এতদূর। আমার সাম্প্রতিক ব্যর্থতা এই তত্ত্বের উপর ভিত্তি করে ছিল যে হয়তো ডেটাগ্রিডভিউ বার্তাগুলি আটকানোর জন্য WIN32 API wndproc subclassing ব্যবহার করছিল, তাই আমি পুরাতন wndproc কে সংরক্ষণ করার জন্য ডেটাগ্রিডভিউ এর নিয়ন্ত্রণ সংগ্রহে যোগ করার পরে এটি পুনরুদ্ধার করেছিলাম। এটা কাজ না

মেসি - গুপ্তচর সম্পর্কে আমাকে স্মরণ করায় ধন্যবাদ ++ চিঠি "এ" এর জন্য, সম্পাদনা উইন্ডোর একটি কনভোবক্স প্যারেন্টে একটি EN_UPDATE পাঠায়। কিন্তু, "Q" এর জন্য নয়। এটা এত অদ্ভুত।

আমি নিজেকে দৃঢ়ভাবে বিশ্বাস করি যে ডেটাগ্রেড ভিউ কম্বো এবং সম্পাদনাটি উপগিরি করে না, কারন আমি সৃষ্টির পরে wndprocs এর ঠিকানা এবং গ্রিডের সংগ্রহে তাদের যোগ করার আগে এবং তারপর পরে যখন আমি আঁকাচ্ছি। যতক্ষণ না গ্রিড কোন ধরণের বিশ্বব্যাপী হুক ইনস্টল করে।

আমি মনে করি, হয়ত আমি সম্পাদনা নিয়ন্ত্রণ উপবেশন করতে পারি, এবং তারপর বিজ্ঞপ্তিটি কংবক্সে পাঠাতে পারি যেভাবে আমি এখানে সম্পাদনা সম্পাদনা দেখতে পাচ্ছি?

সম্পাদনা করুন: এখানে আরো তথ্য। স্পীড ++ থেকে গ্রিড, কনগবক্স, এবং সম্পাদনা নিয়ন্ত্রণ থেকে উইন্ডোজ বার্তাগুলি:

HWNDs: 122064e < grid 010d0674 < combobox 01360696 < combox's edit control

<01402> 01360696 P WM_KEYDOWN nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01403> 010D0674 S WM_GETDLGCODE
<01404> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01405> 010D0674 S WM_GETDLGCODE
<01406> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01407> 010D0674 S WM_GETDLGCODE
<01408> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01409> 010D0674 S WM_GETDLGCODE
<01410> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01411> 01360696 P WM_CHAR chCharCode:'0061' (97) cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01412> 010D0674 S WM_GETDLGCODE
<01413> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01414> 010D0674 S WM_GETDLGCODE
<01415> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS

<01416> 010D0674 S WM_COMMAND wNotifyCode:EN_UPDATE wID:1001 hwndCtl:01360696  <<< edit control sends to combobox

<01417> 010D0674 S message:0x2111 [User-defined:WM_USER+7441] wParam:00060674 lParam:010D0674    What do these do?
<01418> 010D0674 R message:0x2111 [User-defined:WM_USER+7441] lResult:00000000

<01419> 010D0674 R WM_COMMAND
<01420> 010D0674 S WM_CTLCOLOREDIT hdcEdit:C7011AA6 hwndEdit:01360696
<01421> 010D0674 R WM_CTLCOLOREDIT hBrush:F0103EB0

<01422> 010D0674 S WM_COMMAND wNotifyCode:EN_CHANGE wID:1001 hwndCtl:01360696  << edit control sends to combobox

<01423> 010D0674 S message:0x2111 [User-defined:WM_USER+7441] wParam:00050674 lParam:010D0674

<01424> 0122064E S WM_PAINT hdc:00000000   <<< grid is told to paint
<01425> 0122064E S WM_ERASEBKGND hdc:94011D4E
<01426> 0122064E R WM_ERASEBKGND fErased:True
<01427> 0122064E S WM_GETTEXTLENGTH
<01428> 0122064E R WM_GETTEXTLENGTH cch:0
<01429> 0122064E S WM_GETTEXT cchTextMax:2 lpszText:0012D0C0
<01430> 0122064E R WM_GETTEXT cchCopied:0 lpszText:0012D0C0 ("")
<01431> 0122064E S WM_GETTEXTLENGTH
<01432> 0122064E R WM_GETTEXTLENGTH cch:0
<01433> 0122064E S WM_GETTEXT cchTextMax:2 lpszText:0012D0C0
<01434> 0122064E R WM_GETTEXT cchCopied:0 lpszText:0012D0C0 ("")
<01435> 010D0674 S WM_WINDOWPOSCHANGING lpwp:0012D4B0
<01436> 010D0674 R WM_WINDOWPOSCHANGING
<01437> 010D0674 S CB_GETCURSEL
<01438> 010D0674 R CB_GETCURSEL index:CB_ERR
<01439> 010D0674 S WM_GETTEXTLENGTH
<01440> 01360696 S WM_GETTEXTLENGTH
<01441> 01360696 R WM_GETTEXTLENGTH cch:2
<01442> 010D0674 R WM_GETTEXTLENGTH cch:2
<01443> 010D0674 S WM_GETTEXT cchTextMax:6 lpszText:0012CC44
<01444> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012BE64
<01445> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012BE64 ("a")
<01446> 010D0674 R WM_GETTEXT cchCopied:2 lpszText:0012CC44 ("a")
<01447> 010D0674 S CB_GETCURSEL
<01448> 010D0674 R CB_GETCURSEL index:CB_ERR
<01449> 010D0674 S WM_GETTEXTLENGTH
<01450> 01360696 S WM_GETTEXTLENGTH
<01451> 01360696 R WM_GETTEXTLENGTH cch:2
<01452> 010D0674 R WM_GETTEXTLENGTH cch:2
<01453> 010D0674 S WM_GETTEXT cchTextMax:6 lpszText:0012CC44
<01454> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012BE64
<01455> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012BE64 ("a")
<01456> 010D0674 R WM_GETTEXT cchCopied:2 lpszText:0012CC44 ("a")
<01457> 010D0674 S CB_GETCURSEL
<01458> 010D0674 R CB_GETCURSEL index:CB_ERR
<01531> 0122064E R WM_PAINT
<01532> 010D0674 S WM_PAINT hdc:00000000
<01533> 010D0674 S WM_NCPAINT hrgn:00000001
<01534> 010D0674 R WM_NCPAINT
<01535> 010D0674 S WM_ERASEBKGND hdc:0F0141ED
<01536> 010D0674 R WM_ERASEBKGND fErased:True
<01537> 0122064E S WM_CTLCOLOREDIT hdcEdit:840137F1 hwndEdit:010D0674
<01538> 0122064E R WM_CTLCOLOREDIT hBrush:F0103EB0
<01539> 010D0674 R WM_PAINT
<01540> 01360696 S WM_PAINT hdc:00000000
<01541> 01360696 S WM_NCPAINT hrgn:00000001
<01542> 01360696 R WM_NCPAINT
<01543> 01360696 S WM_ERASEBKGND hdc:C7011AA6
<01544> 01360696 R WM_ERASEBKGND fErased:True
<01545> 010D0674 S WM_CTLCOLOREDIT hdcEdit:870137F1 hwndEdit:01360696
<01546> 010D0674 R WM_CTLCOLOREDIT hBrush:F0103EB0
<01547> 010D0674 S WM_CTLCOLOREDIT hdcEdit:870137F1 hwndEdit:01360696
<01548> 010D0674 R WM_CTLCOLOREDIT hBrush:F0103EB0
<01549> 01360696 R WM_PAINT
<01555> 0122064E S WM_CTLCOLOREDIT hdcEdit:8A0137F1 hwndEdit:010306AC
<01556> 0122064E R WM_CTLCOLOREDIT hBrush:78103C5B
<01568> 010D0674 S CB_GETCURSEL
<01569> 010D0674 R CB_GETCURSEL index:CB_ERR
<01570> 010D0674 S WM_GETTEXTLENGTH
<01571> 01360696 S WM_GETTEXTLENGTH
<01572> 01360696 R WM_GETTEXTLENGTH cch:2
<01573> 010D0674 R WM_GETTEXTLENGTH cch:2
<01574> 010D0674 S WM_GETTEXT cchTextMax:6 lpszText:0012D7A4
<01575> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012C9C4
<01576> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012C9C4 ("a")
<01577> 010D0674 R WM_GETTEXT cchCopied:2 lpszText:0012D7A4 ("a")
<01578> 010D0674 S CB_GETCURSEL
<01579> 010D0674 R CB_GETCURSEL index:CB_ERR
<01580> 010D0674 S WM_GETTEXTLENGTH
<01581> 01360696 S WM_GETTEXTLENGTH
<01582> 01360696 R WM_GETTEXTLENGTH cch:2
<01583> 010D0674 R WM_GETTEXTLENGTH cch:2
<01584> 010D0674 S WM_GETTEXT cchTextMax:6 lpszText:0012D6E0
<01585> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012C900
<01586> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012C900 ("a")
<01587> 010D0674 R WM_GETTEXT cchCopied:2 lpszText:0012D6E0 ("a")
<01588> 010D0674 S CB_GETCURSEL
<01589> 010D0674 R CB_GETCURSEL index:CB_ERR
<01590> 010D0674 S WM_GETTEXTLENGTH
<01591> 01360696 S WM_GETTEXTLENGTH
<01592> 01360696 R WM_GETTEXTLENGTH cch:2
<01593> 010D0674 R WM_GETTEXTLENGTH cch:2
<01594> 010D0674 S WM_GETTEXT cchTextMax:6 lpszText:0012D6E0
<01595> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012C900
<01596> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012C900 ("a")
<01597> 010D0674 R WM_GETTEXT cchCopied:2 lpszText:0012D6E0 ("a")
<01598> 010D0674 R message:0x2111 [User-defined:WM_USER+7441] lResult:00000000
<01599> 01360696 S WM_GETTEXTLENGTH
<01600> 01360696 R WM_GETTEXTLENGTH cch:2
<01601> 01360696 S WM_GETTEXT cchTextMax:6 lpszText:0012DF8C
<01602> 01360696 R WM_GETTEXT cchCopied:2 lpszText:0012DF8C ("a")
<01603> 010D0674 R WM_COMMAND
<01604> 01360696 P WM_KEYUP nVirtKey:'A' cRepeat:1 ScanCode:1E fExtended:0 fAltDown:0 fRepeat:1 fUp:1

অক্ষর q

<01625> 01360696 P WM_KEYDOWN nVirtKey:'Q' cRepeat:1 ScanCode:10 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01626> 010D0674 S WM_GETDLGCODE
<01627> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01628> 010D0674 S WM_GETDLGCODE
<01629> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01630> 010D0674 S WM_GETDLGCODE
<01631> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01632> 010D0674 S WM_GETDLGCODE
<01633> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01634> 01360696 P WM_CHAR chCharCode:'0071' (113) cRepeat:1 ScanCode:10 fExtended:0 fAltDown:0 fRepeat:0 fUp:0
<01635> 010D0674 S WM_GETDLGCODE
<01636> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01637> 010D0674 S WM_GETDLGCODE
<01638> 010D0674 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS | DLGC_WANTCHARS
<01640> 01360696 P WM_KEYUP nVirtKey:'Q' cRepeat:1 ScanCode:10 fExtended:0 fAltDown:0 fRepeat:1 fUp:1
1
আমি bytes.com ফোরাম থেকে উদাহরণ চেষ্টা, এবং এটি আমার জন্য কাজ না। যদি আপনি repro পদক্ষেপ আছে যদি আমি কিছু কোড একটি স্পিন দিতে খুশি হবেন
যোগ লেখক Cory Foy, উৎস
আমি এখানে এস বার্তা mehing খুঁজছেন: 0x2111 [ব্যবহারকারী-সংজ্ঞায়িত: WM_USER + 7441] </কোড> কিন্তু যাইহোক আমি বেস্ট আমি কি ঘটছে অনুমান করতে পারেন আপনি যা হারিয়ে গেছেন তা ইতিমধ্যেই ম্যাপ করা হয়েছে। সম্ভবত Ctrl + Q = ত্যাগ কংকা হটকি ভালভাবে পরিচালনা করছে না।
যোগ লেখক John Smith, উৎস

2 উত্তর

কোনও সুযোগে, আপনি ইতিমধ্যে আপনার সমস্যার সমাধান করেছেন?

আমার মত একই সমস্যা আছে, ডেটাগ্রিড ভিউর জন্য আমার কাস্টম নিয়ন্ত্রণ অক্ষর প্রশ্ন, সময়, ডলার, একক উদ্ধৃতি, শতাংশ ইত্যাদি পেতে পারে না।

আমি "সুইচ পরিবর্তন করে ডিফল্ট: প্রত্যাবর্তন মিথ্যা" পরিবর্তন করার জন্য "সুইচটি ডিফল্ট: রিটার্ন করুন! ডাটাগ্রিডভিউউইন্ট ইনপুটকাই" পরিবর্তন করে সমস্যার সমাধান করতে পেরেছি।

আমি মাইক্রোসফ্ট থেকে Datagridview জন্য আপনার নিজস্ব usercontrol করার জন্য প্যাটার্ন কোড অনুমান অনুকূল নয়। এটি মাইক্রোসফটের প্যাটার্ন কোড:

http://msdn.microsoft.com/en-au /library/7tas5c80(vs.80).aspx

public bool EditingControlWantsInputKey(
    Keys key, bool dataGridViewWantsInputKey)
{
   //Let the DateTimePicker handle the keys listed.
    switch (key & Keys.KeyCode)
    {
        case Keys.Left:
        case Keys.Up:
        case Keys.Down:
        case Keys.Right:
        case Keys.Home:
        case Keys.End:
        case Keys.PageDown:
        case Keys.PageUp:
            return true;
        default:
            return false;//I changed this to: return !dataGridViewWantsInputKey.  My usercontrol can now receive Q, period, dollar, etc.
    }
}
1
যোগ
আমি সমস্যাটির সমাধান পাইনি আমি আপনার সমাধান চেষ্টা করেছি এবং যে আমার জন্য কাজ না, এবং এটি সম্পর্কে চিন্তা পরে, আমি বিস্মিত না। আমি হেডারে কব্জিবক্স ব্যবহার করছি, একটি নিয়মিত সেল নয়। আমি মনে করি না আমার গ্রিড আমার ক্যাসবক্স সম্পর্কে যথেষ্ট জানে এবং তার IDataGridViewEditingControl ইন্টারফেসটি ব্যবহার করে। আমি বলতে চাচ্ছি, আমি শুধু এই সমস্যা তুলনায় আরো সমস্যা আছে মনে করি। আমি আপনার উত্তরের হিসাবে স্বীকৃত একটি হিসাবে চিহ্নিত করতে যাচ্ছে।
যোগ লেখক Corey Trager, উৎস

আমার প্রশ্ন আংশিক উত্তর Combobox আমি KeyDown, টেক্সট চ্যাঞ্জেড, এবং KeyUp ঘটনা পরিচালনা, যা যে ক্রমে আগুন। যদি আমি KeyDown থেকে KeyChanged থেকে KeyChanged স্কপ গিয়েছিলাম, আমি চেক চরিত্র কিনা Keys.Q বা Keys.OmPeriod কিনা। (আমি নিশ্চিত নই যে এটি অন্যদের জন্য সুরক্ষিত, শিফট/ডি 1, শিফ্ট/ডি ২ ইত্যাদি ইত্যাদি)। যদি এটি ঐগুলি এক হয়, আমি নিজেকে combobox টেক্সট পরিবর্তন।

কিন্তু এটি যথেষ্ট নয়, কারণ পাঠ্য পরিবর্তন করার সময় পাঠ্য সূচনার শুরুতে কার্টরটি সম্পাদনা নিয়ন্ত্রণ (যে কংবক্সের সাথে সম্পর্কযুক্ত) সেট করে। সুতরাং, এটি ঠিক করার জন্য, আমি সম্পাদনা নিয়ন্ত্রণের হ্যান্ডেল পেতে FindWindowEx ব্যবহার করি, তারপর শব্দটির শেষে কার্সারটি পুনরায় সেট করার জন্য এটি একটি EM_SETSEL পাঠান।

0
যোগ