UltraGridColumn with button - c#

how do I edit the properties of the button created after setting the property:
columnUltraGrid.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton;
I would like to add an image and remove the edges of it or just remove the edges and add a word, but then it would have to resize it. If it is not possible to edit, any idea of how it could be done?

By default, the button will be shown using the OS theme. To be able to set the appearance of the cell button you need first to turn off the OS themes:
this.ultraGrid1.UseOsThemes = DefaultableBoolean.False;
Then you can set the ButtonStyle and CellButtonAppearance of the Override:
e.Layout.Override.CellButtonAppearance.Image = MyImage;
e.Layout.Override.ButtonStyle = UIElementButtonStyle.Borderless;

Related

How do I create an invisible checkbox that remains clickable?

I'm creating an application in Forms for very non tech-savvy users. In doing so, I'm attempting to keep some more complicated buttons and menus hidden in the main program unless an invisible checkbox is checked- which only the QA/Dev team would need to use for troubleshooting.
I've attempted to use checkBox1.Hide() followed by checkBox1.Show on click as well as on CheckedChanged, however when the checkbox is hidden or has visibile set to false, the checkbox is unable to be checked. I've also looked at the checkbox's properties window in the Form design, but setting the bordercolor to white or the bordersize to 0 under FlatAppareance had no effect.
Any suggestions? Thanks for the help.
I agree with the comments this is not a good practice when designing a user interface, but there is a way to make an invisible button in winforms.
in your constructor or in a method set the properties of the button like so
button1.FlatStyle = FlatStyle.Flat;
button1.FlatAppearance.BorderColor = BackColor;
button1.FlatAppearance.MouseOverBackColor = BackColor;
button1.FlatAppearance.MouseDownBackColor = BackColor;
this will render a invisible to the user button that can be clicked. that is if your click event is already set up.

Change BackgroundImage of form from Custom Control running in Panel

My project consists of a form with a panel that contains a custom control.
In this custom control I have buttons that change the background image.
My issue is; these buttons only change the background image of the custom control that they are placed in, and I need them to change the background image of the main form containing the panel with the custom control.
My current code:
this.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
I need something that will in effect accomplish this:
MainForm.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
ie: Change background image of MainForm.cs from CustomControl.cs
You can use Control.FindForm method for that, like this
this.FindForm().BackgroundImage = ...
I ended up using something different:
Form MainForm = Application.OpenForms["(The name of the form in which I wanted to change the background)"];
//...
MainForm.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));
It ended up being a lot simpler than I thought it was.
Find the control's parents and change the BackgroundImage:
if(this.Parent!=null && this.Parent.Parent!=null)
this.Parent.parent.BackgroundImage = Image.FromFile(System.IO.File.ReadAllText(BackgroundSkinsPath));

Is it possible to add more than one panel in same location

i'm using telerik control.
So i want to ask,
In winforms application ,Is it possible to add more than one panel in same location and display one at a time just like show/hide property.
Make sure you have placed all panel control in same container or form. then you can use Visible property to show and hide panel. BringFront and SendToBack function will be used to bring panel on top or send it to back. If you have placed any panel in another panel then that will be disappeared when you Hide parent panel. So, Make sure all panels' parent control must be same. To determine the parent control simply select that panel and press escape key to select their parent.
private void LoadPanels()
{
panel1.Location = new Point(10,10);
panel2.Location = new Point(10,10);
panel3.Location = new Point(10,10);
panel4.Location = new Point(10,10);
panel5.Location = new Point(10,10);
VisiblePanel("panel1");
}
private void VisiblePanel(string panelName)
{
string[] panels = new string[]{"panel1","panel2","panel3","panel4","panel5"};
for (int i=0;i<panels.Length;i++)
this.Controls[panels[i]].Visible = (panels[i] == panelName);
this.Controls[panelName].BringToFront(); //Not required you can remove this line.
}
Here's a slightly different approach you might want to consider...
Are you wanting to be able to programmatically select the contents of a rectangular area at runtime, selecting among various controls to display? If so, you could use a custom TabControl which has its tabs (not the pages) hidden.
Then you can select which page is displayed by programmatically changing its SelectedIndex property at runtime.
Doing it like this means that your form editor will show a normal tab control, which allows you to much more easily add the content to each page - but at runtime the tabs will be hidden from the user; they will just see the contents of the currently selected page.
See Hans Passant's answer here for how to create such a custom tab control.
(However, you might also want to override the OnKeyDown for the custom tab control in order to ignore Ctrl-Tab.)

Need to use a color dialog result in a separate Windows Form

Please go easy on me I am very new to coding and stuck on something that I'm sure is very simple.
Currently I have an Options form in which the user can select from the standard colordialog.showdialog() and the result is displayed as a sample on the form as a label
If(backColorDialog.Showdialog() == DialogResult.OK);
backColorLabel.BackColor = backColorDialog.Color; // set to label to show option selected
I need to take that selected color and apply it to the background color of a "game board" in another Windows form. I have already added a reference from the "game board" form to the options form.
The "Game Board" is laid over a TableLayoutPanel so I need to be able to change the BackColor of the panel
TableLayoutPanel1.BackColor = (colordialog result from options form)
Like I said I am new to this and appreciate any help you can provide
Create a property on your configuration form:
Color SelectedColor { get; private set; }
And assign users choice to it:
if (backColorDialog.Showdialog() == DialogResult.OK)
{
backColorLabel.BackColor = backColorDialog.Color;
SelectedColor = backColorDialog.Color;
}
(note there was a mistake in your code - the ; after if line)
After this, in your main form you can read it from your configuration form:
TableLayoutPanel1.BackColor = optionsForm.SelectedColor;
As noted by justin.chmura in the comments below, you can also consider a different approach using events. Your options form would raise an event when user selects a different color, and main form's event handler would apply this color instantly on the game panel. The difference is that it would update the color immediately. When it's not needed the above solution with a property is enough.

Windows forms button.Enabled not working visually

I am creating a windows forms button dynamically wrapped in another control. The issue that I am having is that when I set the buttons Enabled property it is still being displayed as though it were enabled (not greyed out) however it is not clickalbe. This leads me to believe that I am not creating the button correctly, or something else like that.
This is the code that I use to create the button.
private System.Windows.Forms.Button CreateWindowsButton(SessionButtonTypes sessionButtonType)
{
windowsButton = new System.Windows.Forms.Button()
{
Top = 3,
Name = sessionButtonType.ToString(),
Width = DeterminButtonWidth(guiElement),
Height = 45,
FlatStyle = FlatStyle.Flat,
BackgroundImage = GUI.Instance.GUIImageElement(guiElement)
};
// set windows button flat border parameters
windowsButton.FlatAppearance.BorderSize = 0;
// for testing
windowsButton.Enabled = false;
}
[UPDATE]
The solution turns out to be putting image element into the image parameter, not the background image parameter.
Remove `FlatStyle = FlatStyle.Flat`.
Using FlatStyle forces the control to have a predefined style which would make the button appear not greyed out even when Enabled is equal to false.
I had the same problem and for me the solution was changing flatstyle from "Standard" to "System"

Categories