It is ugly but I can't find a better place to put Move-up and Down buttons.
What is your suggestion?
I would say remove them and make it drag and droppable :) Of course that isn't as intuitive to the user, but maybe you could have a label that says you can drag them to move them.
Position of buttons are right.
For a more eye catching UI use up arrow and down arrow from Webdings/Wingdings font.
BTW this quesion is more suited for here.(https://ux.stackexchange.com/)
Just remove them, they are superfluous. The user can already directly click the item, can use the up/down arrow keys and has a scrollbar. That's enough.
Not only is it unnecessary, it is actually inferior. Because the key won't repeat unless the user hammers the mouse button on it and it steals away the focus from the list. There are workarounds for those problems but that's just code you shouldn't write in the first place.
I think you can remove text (move up, move down) - arrows are intuitive for people. Also consider how Microsoft implemented same feature in Edit columns dialog for grid:
BTW the best option IMO is drag-and-drop rows (no buttons at all). But you should somehow provide to users information (cursor, border, tooltip), that it is possible..
Related
I'm rather new to Xamarin Forms and I am finding some of the rigidness of the UI to be difficult to deal with and would like some expert input. Basically what i'm trying to make is a preferably sleek menu UI like Example Menu (crudely drawn in MS paint) that is nothing more than a list of menu options, and when you click one, the ones below it slide or move down a bit to make room for an area with additional descriptive text. Also, if the menu option opens up and the other options no longer fit on the screen, I would want them to remain out of scope in a ScrollView.
Now my issue is that I don't really know the best way to go about it. My thoughts:
I am currently attempting to nest a grid inside of a scroll view and formulate some kind of function that will add an empty row definition under the indexed menu option button, and populating the empty row. Basically using adding/removing grid rows to handle the 'expanding and contracting' of the menu option. I am struggling to get this function bug free right now but I am wondering if animating this action is possible with a smooth easing sliding motion or if I should explore better easier options. It seems silly to constantly clear the grid and re-add all of the update rowdefinitions each time.
I am curious if perhaps dynamically changing the specific buttons row height when clicked might be cleaner than adding/removing rows. Or using a listview and changing the listview cell's height when clicked. Or would a stacklayout work best in this case since it is technically a stack of buttons. Is it best to add/remove rows or are there easier/better ways to handle this?
Essentially, I am looking for some pointers on which direction I should take that makes the most convenient sense. I chose to start with a grid because it seemed easiest to work with in this case but when looking to animate the menu option and make a sleek smooth menu I am starting to have doubts.
Thanks!
p.s. If someone can also provide or link me a relevant example of how an animation in this case would go down it would be greatly appreciated
I have DataTemplates where the elements don't always fill the entire cell (ie. because I increase the row height).
Now a row gets selected only if I click inside the element, if I click outside the element, but still in the row nothing happens.
How to make a WPF datagrid row selectable even if I click in between to elements.
One idea would be to listen to the MouseDown in the datagrid, but how can I identify the Row
Update: A work around is to give all the cell datatemplate a border with transparent background to fill the cell (I find this not very elegant).
I not sure know why you think adding a "buffer" around your content is not a very elegant way to achieve the goal of enlarging the clickable region of that content.
I think that it is exactly what you should do and that it makes perfect sense architecturally, from the point of view of style, and most importantly from my point of view, for clarity and simplicity.
It is true there are other solutions that will give the same net effect to the user but the buffer approach does have this elegant property:
If you click it and it responds, what you clicked is part of the content that responds
Programming as a whole can be rather inelegant. It is often a bunch of special cases and complicated solutions to what seem like they should be easy problems. The famous computer scientist Donald Knuth has said that he feels what makes programmers programmers is their ability to cope with these inelegant things. The things that would make a mathematician go crazy.
does anyone know how to do this? I presume it uses some sort of event handler but i wondered if anyone could set me on my path?
Also, how does one show that yellow textbox which sometimes appears when you hover over processional software and it gives some information about what to fill in the textfield, thats perferably how i wish to show the coordinates? I dont know the name of what its called.
In IE 8, if you hover over the name of a tab, it comes up.
Thank you in advance
Evets actually are not the way to go here. You want to show picture coordinates, pixel_accuracy. Mouse events are actually not accurate enough to do that. You will want to poll the mouses position on a timer and when you detect it hovering over your picture, tranlate the mouse position to pixel coordinates.
The yellow popup is called a ToolTip; search for C# ToolTips and I'm sure you'll find plenty. As for the hover, could you explain your intent better? It sounds like you may end up reinventing the wheel
If this is a webpage, Use javascript(/Jquery) to get the mouse co-ordinates and show them in a box. It would be much much easier, and dare I say it, really the only way to do it.
ASP.net isn't so much about client side interaction as you may be thinking along the lines of.
I've searched around for an alternative way of drawing selection indicators for visual objects (like selected edges, lines etc.) without the use of ControlPaint.DrawReversibleFrame and related XOR methods. The reasons are unwanted XOR-ing "artifacts", reversibility not applying to bitmaps, no control of the actual visual look and slowness.
On the other hand I want to avoid having to repaint the whole scene (map actually) if a user decides he wants to deselect an object or two, because the repaint could be quite expensive.
So the only alternative I can see is implementing some basic drawing logic directly on a Bitmap, but with storing the previous contents of the pixels before they change. Then (in theory) I would be able to reapply old contents of, say, an selected edge rectangle if the user chooses to deselect that edge.
My question is whether you think this is a good idea or do you see some other alternatives to my problem (within the GDI+)?
Thanks in advance
If the selection indicator is just drawn on the top of the unselected object, you can use two bitmaps, draw all the unselected objects on the background one and the selection indicators on the other, and paint them both on screen.
Else, you can do the same, except that you render the selected objects instead of just indicators.
Only store the rectangles "of interest" in an off screen buffer. And repaint when the focus is lost. . . Or if you can redraw just the portion as it appears normally based on in memory data you should be fine. Otherwise it seems that you have the gist of it.
I am programming winforms using c# and vb.net.
I love the arrows used in coderush.
for those who have not seen coderush arrows ,please see this image.
(source: aspnetpro.com)
http://www.aspnetpro.com/productreviews/2004/08/asp200408bn_p/asp200408bn_p_image002.jpg
I want to have something similar in my program.
only difference is i will be using it to highlight textboxes and buttons.
I only want the arrow , the text on the arrow is not important.
So maybe I need to make a general function like
DrawHighlightArrow(controlname)
and it will somehow manage to draw an arrow next to that control
Please suggest a nice geeky way to solve this problem in C# or Vb.net
Thank you
Anna
Override the OnPaint method on the Form, and use the DrawImage() method on the object from the PainteEventArgs.Graphics property to draw a bitmap of an arrow.
You could create a custom form with a transparent background, paint your arrow on it using GDI+ (using marxidad's technique above, or by just dropping a PictureBox on it and handling the Paint event).
Then just instantiate a new instance of the arrow form over the top of your existing "parent" form (you might want to set TopMost to true) and start a Timer to fade it out.
The only thing to be careful of there is...
cleaning up properly if you prematurely close the "parent" form, and...
passing through any click events to the "parent" form.
There is a really nice library called Locus Effects here. Go check it out, it does exactly what you want it to do.