Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 320
  • Last Modified:

Can I know the top and width of the current cell On datagridview

Can I know the top and width of the current cell On datagridview  or any cell
0
Ahmadal_najjar2003
Asked:
Ahmadal_najjar2003
  • 8
  • 8
1 Solution
 
Jorge PaulinoIT Pro/DeveloperCommented:
You can look in the row or column width, but can you explain better what you want ?
0
 
Ahmadal_najjar2003Author Commented:
I really have an idea in my mind when the user want to make a bill by using datagridview. there are columns such as (ProductCode , ProductDesc) . the user may not saving the product code in his mind so I will give him option to type some text of the product description and the send a command to sql server database with like %% then I put the result which may contain more than one item into a listbox to select from . I want to put this listbox in the same place of productdesc column until he select the item then I make it unvisible.

If you have another idea.

Ahmad
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
That is more hard (not impossible) to achive but ...

I would add a button on the row and when he clicks, it just open a modal form with the search option. Then after the user select/accept the product code, it closes the form and add that code to the current row of the datagridview.

Another option is to insert a combobox with all the options (but I like more the first one)
0
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
Ahmadal_najjar2003Author Commented:
I don't think it is imposible. I did it but I need the listbox to follow the currentrow to bo opened as proffecien way.
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
>> I don't think it is imposible

I didn't say that! You want the listbox near to the cell, right ?
0
 
Ahmadal_najjar2003Author Commented:
I don't think it is imposible. I did it but I need the listbox to follow the currentrow to bo opened as proffecien way.
0
 
Ahmadal_najjar2003Author Commented:
First sorry for (imposible) because you said (not imposible) . Second sorry for repeate the comment , some error with my internet.

Thats right i need it neer the cell ?
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
>> First sorry for (imposible) because you said (not imposible) . Second sorry for repeate the comment , some error with my internet.

No problem :)

You can do something like this to display the listbox near to the row you have selected (you can use cell enter event or other). You then can show/hide as you like.
        Dim recRow As New Drawing.Rectangle
        Dim recCol As New Drawing.Rectangle
 
        With Me.DataGridView1
            recRow = .GetRowDisplayRectangle(.CurrentCell.RowIndex, False)
            recCol = .GetColumnDisplayRectangle(.CurrentCell.ColumnIndex, False)
            Me.ListBox1.Left = recCol.X + 10
            Me.ListBox1.Top = recRow.Y + .CurrentRow.Height + 10
        End With

Open in new window

0
 
Ahmadal_najjar2003Author Commented:
I tried it but not success will with me.
But What I think as I Want listbox to be within the ProdectDesc only. and at design time I put it on product desc column. Then each time at runtime I just change the Top of it as follow
ListBox1.Top = ListBoxOriginalTop + .current.Height * RowIndex   ' as rowindex is fixed for all rows

And it works fine.

0
 
Jorge PaulinoIT Pro/DeveloperCommented:
>> ListBox1.Top = ListBoxOriginalTop + .current.Height * RowIndex   ' as rowindex is fixed for all rows

But that way you cannot change the size of the rows. The method that I have showed you works fine for shure - I have tested (of course).

You just need the check what column is select:
If Me.DataGridView1.CurrentCell.ColumnIndex = 2 Then
  ' show the listbox
End If

What else problems did you found ?
0
 
Ahmadal_najjar2003Author Commented:
ok ,
My listbox top  as design time is = 160

after
   Me.ListBox1.Top = recRow.Y + .CurrentRow.Height + 10
is 35+22+10 = 67

so now list box out of datagridview
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Have you used the cellenter event for the code I have showed you ?

I will upload a simple sample.
0
 
Ahmadal_najjar2003Author Commented:
Yes Now I tried it with CellEnter , but the problem still exists with Top.
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Opppsss! I'm really sorry but I have posted the wrong code!

That was the first test I have done.  Try this one now and sorry once again:
     Private Sub DataGridView1_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
        Dim recRow As New Drawing.Rectangle
        Dim recCol As New Drawing.Rectangle
 
        With Me.DataGridView1
            recRow = .GetRowDisplayRectangle(.CurrentCell.RowIndex, False)
            recCol = .GetColumnDisplayRectangle(.CurrentCell.ColumnIndex, False)
            Me.ListBox1.Left = recCol.X + .Left + 10
            Me.ListBox1.Top = recRow.Y + .Top + 10
        End With
    End Sub

Open in new window

0
 
Ahmadal_najjar2003Author Commented:
Thank You.
0
 
Jorge PaulinoIT Pro/DeveloperCommented:
Glad I could help!

jpaulino
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 8
  • 8
Tackle projects and never again get stuck behind a technical roadblock.
Join Now