الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اعرف متى غادر التركيز الخلية في DataGrid

مغلق
بدأه فواز الشمري في 4 يناير 2006 · 4 رد · 552 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي 3 أعمدة Columns عند التوقف في الخلية رقم 1 وكتابة الرقم 2 مثلا أريد عند الضغط على زر Enter يقوم بضرب الخلية الحالية مع الخلية الثانية (المجاورة) ووضع الناتج في الخلية الثالثة .

المشكلة عند الضغط على انتر ينتقل تركيز الخلية من الصف الحالي الى الصف التالي يعني ينزل إلى سجل جديد .

مشكلتي تتمثل في كيفية معرفة متى تم ةالضغط على الزر Enter وأنا في هذه الخلية أو حتى بمجر إنتقال التركيز من الخلية إلى أي خلية اخرى . B)

#3

السلام عليكم

يتم ذلك باعادة قيادةoverride الطريقةProcessCmdKey للفئة DataGrid

فاذا كان الزر المظغوط هو Enter يتم ارسال TAB بدلا منه

Public Class MyDataGrid 

          Inherits DataGrid 



          Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean 

               If msg.WParam.ToInt32() = CInt(Keys.Enter) Then 

                    SendKeys.Send("{Tab}") 

                    Return True 

               End If 

               Return MyBase.ProcessCmdKey(msg, keyData) 

          End Function



     End Class

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

كود لنفس الغرض

Public Class MyDataGrid 

         Inherits DataGrid 

        Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean 


If keyData = Windows.Forms.Keys.Enter Then
                _CurrCell = MyBase.CurrentCell
                If MyBase.CurrentCell.ColumnNumber < _MaxColumnIndex Then
                    MyBase.CurrentCell = New DataGridCell(MyBase.CurrentCell.RowNumber, MyBase.CurrentCell.ColumnNumber + 1)
                Else
                    MyBase.CurrentCell = New DataGridCell(MyBase.CurrentCell.RowNumber + 1, 1)
                End If

                If MyBase.TableStyles(0).GridColumnStyles(MyBase.CurrentCell.ColumnNumber).GetType() Is GetType(DataGridTextBoxColumn) Then
                    RaiseEvent CellGotFocus(MyBase.CurrentCell)
                Else
                    
                End If
End IF
End Class
#5

ممتاز جداً وشرح رائع وسلس هههه .

جزاك الله خيراً ،،،

ولكني تصفحت المنتدى الرائع ووجدت موضيع كثيرة تتحدث عن DataGrid وأرجو من المشرفين تجميع كافة المواضيع في صفحة واحدة ** إذا أمكن ** .

هذا الموضوع مغلق.

مواضيع مشابهة