Infragistics Windows Form controls offer opportunities to cover different scenarios and represent data in your desktop applications. This toolkit is one of the best, most extensible third party controls that I have ever used for UI development. With more than 100+ controls, Infragistics Windows Forms is the most mature, fully-featured Windows Forms Product on the market. With features that cover every aspect of enterprise software development including Microsoft Office Style user interfaces, high performance charting, and full modern experiences with touch gestures, these controls were built to empower you to create Touch-Enabled, Office Inspired Apps on Every Platform.
In this article we will discuss some common scenarios when you need to have touch support and then we'll explore some useful examples of how to implement it.
Touch Enabled Concept
Prior to Windows 7, Windows Forms controls did not natively support gestures of user interaction with a touch input digitizer surface through managed code. You may administer Windows7 supported WM_GESTURE message in unmanaged code to provide support for the recognized Windows gestures.
One well-known gesture, kinetic scrolling with inertia (also referred to as touch panning) occurs when the user drags a finger across a touch surface, with the speed and direction of the movement determining the direction of and speed at which the window scrolls. The scrolling continues, even after the user withdrawals his or her finger, gradually decelerating before coming to a complete stop, a behavior known as panning inertia. Any user interaction occurring during this deceleration immediately stops the inertial panning. This behavior is prevalent on smart phones and tablet devices such as iPhone, iPad and Windows touch-enabled Surface devices.
Another application of the panning gesture is drag selection, where the user drags a lasso around the screen, selecting any items captured within the bounds of the lasso rectangle.
Other gestures also have default behaviors associated with them, for example, displaying a context menu using a press-and-hold gesture. This is where the user holds a finger down on the touch surface without moving it and displays a context menu after a short time.
What you need to know
The size of the Infragistics Windows Forms touch-enabled controls may be the first thing you notice. By design, touch-enabled controls appear larger (wider, taller or both) than buttons and other elements in the User Interface (UI) making it easier to interact with and operate when using a touch-sensitive surface.
Enabling the touch functionality occurs at the form level rather than the control level, as it is unlikely that both Touch and Non-Touch system use the same application. Adding the UltraTouchProvider component to the form enables Form level touch support for NetAdvantage controls.
Although other approaches were analyzed for enabling Touch functionality at the application level, none appeared to be a feasible solution allowing you to interact with the touch metrics at design-time to arrange controls on the form using the designer. The only way to enable touch at the application level is via the static property. Since the static property is not available at design-time, best practice dictates enabling the touch functionality at the Form level.
Touch Support Controls
Touch Experience
Touch Metric Suport
Resize elements of the Grid, Editor, List View, Tree, Tab, and Tabbed MDI controls to make them larger for better touch interactivity.
Panning Gesture Support
The Grid, Tree, and List View controls are enabled with support for panning gestures, including vertical, slow, fast, and multi-directional panning and flicking. Additionally the Combo, Combo Editor, and Value List support vertical scrolling via the panning gesture.
Multi-Gesture Support
The Grid, Tree, and List View controls support key multi-gesture functionality, including tap, tap & drag, double tap, and tap & hold.
Code Samples
Touch Tab Controls
1:using System;
2:using System.Globalization;
3:using System.Windows.Forms;
4:using Infragistics.Win;
5:using Infragistics.Win.UltraWinTabControl;
6:using Infragistics.Win.UltraWinTabs;
7:
8:namespace TouchEnabledTabControls.CS
9: {
10:publicpartialclass TabControlsForm : Form
11: {
12:#region Constructor
13:public TabControlsForm()
14: {
15: InitializeComponent();
16: }
17:#endregion
18:
19:#region TabControlsFormLoad
20:privatevoid TabControlsFormLoad(object sender, EventArgs e)
21: {
22:// Set the ComboEditors with default display value.
23: ultraComboEditor_Tab_ScrollButtons.SelectedIndex = 2;
24: ultraComboEditor_Tab_CloseButtons.SelectedIndex = 1;
25: ultraComboEditor_Tab_Style.SelectedIndex = 0;
26:
27: ultraComboEditor_TabStrip_ScrollButtons.SelectedIndex = 2;
28: ultraComboEditor_TabStrip_CloseButtons.SelectedIndex = 1;
29: ultraComboEditor_TabStrip_Style.SelectedIndex = 0;
30: }
31:#endregion
32:
33:#region BtnEnableTouchClick
34:privatevoid BtnEnableTouchClick(object sender, EventArgs e)
35: {
36: ultraTouchProvider1.Enabled = !ultraTouchProvider1.Enabled;
37: btnEnableTouch.Text = ultraTouchProvider1.Enabled ? Properties.Resources.Button_Disable_Touch : Properties.Resources.Button_Enable_Touch;
38: }
39:#endregion
40:
41:#region WinTab Control events
42:
43:#region UltraComboEditorTabScrollButtonValueChanged
44:// Show Scroll Buttons
45:privatevoid UltraComboEditorTabScrollButtonValueChanged(object sender, EventArgs e)
46: {
47: var cb = ultraComboEditor_Tab_ScrollButtons;
48:if (cb == null || cb.SelectedItem == null)
49:return;
50:
51: var item = cb.SelectedItem.DisplayText;
52:
53:switch (item)
54: {
55:case"Default":
56: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.Default;
57:break;
58:case"FirstLast":
59: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.FirstLast;
60:break;
61:case"NextPrevious":
62: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.NextPrevious;
63:break;
64:case"NextPagePreviousPage":
65: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.NextPagePreviousPage;
66:break;
67:case"None":
68: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.None;
69:break;
70:case"Thumb":
71: ultraTabControl1.ScrollButtonTypes = ScrollButtonTypes.Thumb;
72:break;
73: }
74: }
75:#endregion
76:
77:#region UltraComboEditorTabCloseButtonValueChanged
78:// Show Close Buttons
79:privatevoid UltraComboEditorTabCloseButtonValueChanged(object sender, EventArgs e)
80: {
81: var cb = ultraComboEditor_Tab_CloseButtons;
82:if (cb == null || cb.SelectedItem == null)
83:return;
84: ultraTabControl1.CloseButtonLocation = (TabCloseButtonLocation)cb.SelectedIndex;
85: }
86:#endregion
87:
88:#region UltraComboEditorTabStyleValueChanged
89:// Select a Style (NotePage)
90:privatevoid UltraComboEditorTabStyleValueChanged(object sender, EventArgs e)
91: {
92: var cb = ultraComboEditor_Tab_Style;
93:if (cb == null || cb.SelectedItem == null)
94:return;
95:
96: var item = cb.SelectedItem.DisplayText;
97:
98:switch (item)
99: {
100:case"Default":
101: ultraTabControl1.Style = UltraTabControlStyle.Default;
102:break;
103:case"NotePage":
104: ultraTabControl1.Style = UltraTabControlStyle.NotePage;
105:break;
106:case"NotePageFlat":
107: ultraTabControl1.Style = UltraTabControlStyle.NotePageFlat;
108:break;
109: }
110: }
111:#endregion
112:
113:#region UltraCheckEditorTabShowListButtonCheckedChanged
114:// Show TabList button
115:privatevoid UltraCheckEditorTabShowListButtonCheckedChanged(object sender, EventArgs e)
116: {
117: ultraTabControl1.ShowTabListButton =
118: ultraTabControl1.ShowTabListButton != DefaultableBoolean.True ? DefaultableBoolean.True : DefaultableBoolean.Default;
119: }
120:#endregion
121:
122:#endregion
123:
124:#region WinTabStrip Control events
125:
126:#region UltraComboEditorTabStripScrollButtonValueChanged
127:// Show Scroll Buttons
128:privatevoid UltraComboEditorTabStripScrollButtonValueChanged(object sender, EventArgs e)
129: {
130: var cb = ultraComboEditor_TabStrip_ScrollButtons;
131:if (cb == null || cb.SelectedItem == null)
132:return;
133:
134: var item = cb.SelectedItem.DisplayText;
135:
136:switch (item)
137: {
138:case"Default":
139: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.Default;
140:break;
141:case"FirstLast":
142: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.FirstLast;
143:break;
144:case"NextPrevious":
145: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.NextPrevious;
146:break;
147:case"NextPagePreviousPage":
148: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.NextPagePreviousPage;
149:break;
150:case"None":
151: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.None;
152:break;
153:case"Thumb":
154: ultraTabStripControl1.ScrollButtonTypes = ScrollButtonTypes.Thumb;
155:break;
156: }
157: }
158:#endregion
159:
160:#region UltraComboEditorTabStripCloseButtonValueChanged
161:// Show Close Buttons
162:privatevoid UltraComboEditorTabStripCloseButtonValueChanged(object sender, EventArgs e)
163: {
164: var cb = ultraComboEditor_TabStrip_CloseButtons;
165:if (cb == null || cb.SelectedItem == null)
166:return;
167: ultraTabStripControl1.CloseButtonLocation = (TabCloseButtonLocation)cb.SelectedIndex;
168: }
169:#endregion
170:
171:#region UltraComboEditorTabStripStyleValueChanged
172:// Select a Style (NotePage)
173:privatevoid UltraComboEditorTabStripStyleValueChanged(object sender, EventArgs e)
174: {
175: var cb = ultraComboEditor_TabStrip_Style;
176:if (cb == null || cb.SelectedItem == null)
177:return;
178:
179: var item = cb.SelectedItem.DisplayText;
180:
181:switch (item)
182: {
183:case"Default":
184: ultraTabStripControl1.Style = UltraTabControlStyle.Default;
185:break;
186:case"NotePage":
187: ultraTabStripControl1.Style = UltraTabControlStyle.NotePage;
188:break;
189:case"NotePageFlat":
190: ultraTabStripControl1.Style = UltraTabControlStyle.NotePageFlat;
191:break;
192: }
193: }
194:#endregion
195:
196:#region UltraCheckEditorTabStripShowListButtonCheckedChanged
197:// Show TabList button
198:privatevoid UltraCheckEditorTabStripShowListButtonCheckedChanged(object sender, EventArgs e)
199: {
200: ultraTabStripControl1.ShowTabListButton =
201: ultraTabStripControl1.ShowTabListButton != DefaultableBoolean.True ? DefaultableBoolean.True : DefaultableBoolean.Default;
202: }
203:#endregion
204:
205:#region UltraTabStripControl1TabStripSelectedTabChanged
206:// Selected Tab Changed event
207:privatevoid UltraTabStripControl1TabStripSelectedTabChanged(object sender, SelectedTabChangedEventArgs e)
208: {
209: var num = e.Tab.Index + 1;
210: ultraTextEditor_TabStrip.Text = num.ToString(CultureInfo.InvariantCulture);
211: }
212:#endregion
213:
214:#endregion
215: }
216: }
Touch Editors And Grid Elements
1:using System;
2:using System.Windows.Forms;
3:using Infragistics.Win;
4:using Infragistics.Win.UltraWinEditors;
5:using System.Drawing;
6:using Infragistics.Win.UltraWinGrid;
7:using ButtonDisplayStyle = Infragistics.Win.ButtonDisplayStyle;
8:
9:namespace TouchEnabledEditorsAndGridElements.CS
10: {
11:publicpartialclass TouchForm : Form
12: {
13:#region Constructor
14:public TouchForm()
15: {
16: InitializeComponent();
17: }
18:#endregion
19:
20:#region TouchFormLoad
21:privatevoid TouchFormLoad(object sender, EventArgs e)
22: {
23:// Bind UltraCombo.
24: ultraCombo.DataSource = new TestData();
25: ultraCombo.SelectedText = "Select Item";
26:
27:
28:// Bind UltraComboEditor.
29: ultraComboEditor.DataSource = new TestData();
30: ultraComboEditor.SelectedIndex = 1;
31:
32:
33:// Bind WinGrid.
34: ultraGrid1.DataSource = new TestData();
35:
36:
37:// Display difault values in ComboEditors.
38: ultraComboEditor_SelectCardViewStyle.SelectedIndex = 0;
39: ultraComboEditor_FixedRowIndicator.SelectedIndex = 1;
40: ultraComboEditor_EnableSummary.SelectedIndex = 3;
41:
42:
43:// Attach DrawFilter (RemoveFocusRectangle) to CheckEditor.
44:// This will prevent from displaying the dotted line when the control is clicked.
45: ultraCheckEditor.DrawFilter = new RemoveFocusRectangle();
46: ultraTabControl1.DrawFilter = new RemoveFocusRectangle();
47: ultraOptionSet.DrawFilter = new RemoveFocusRectangle();
48: }
49:#endregion
50:
51:#region Editor Controls
52:
53:// Add/Remove Buttons LEFT / RIGHT
54:privatevoid UltraCheckEditorAddButtonRightLeftCheckedChanged(object sender, EventArgs e)
55: {
56: var button1 = new EditorButton();
57:
58:// Add /Remove LEFT button
59:if (ultraCalculatorDropDown.ButtonsLeft.Count
60: {
61: ultraCalculatorDropDown.ButtonsLeft.Add(button1);
62: ultraColorPicker.ButtonsLeft.Add(button1);
63: ultraCombo.ButtonsLeft.Add(button1);
64: ultraComboEditor.ButtonsLeft.Add(button1);
65: ultraCurrencyEditor.ButtonsLeft.Add(button1);
66: ultraDateTimeEditor.ButtonsLeft.Add(button1);
67: ultraFontNameEditor.ButtonsLeft.Add(button1);
68: ultraFormattedTextEditor.ButtonsLeft.Add(button1);
69: ultraMaskedEdit.ButtonsLeft.Add(button1);
70: ultraNumericEditor.ButtonsLeft.Add(button1);
71: ultraTextEditor.ButtonsLeft.Add(button1);
72: ultraTimeSpanEditor.ButtonsLeft.Add(button1);
73: ultraTimeZoneEditor.ButtonsLeft.Add(button1);
74: }
75:else
76: {
77: ultraCalculatorDropDown.ButtonsLeft.RemoveAt(0);
78: ultraColorPicker.ButtonsLeft.RemoveAt(0);
79: ultraCombo.ButtonsLeft.RemoveAt(0);
80: ultraComboEditor.ButtonsLeft.RemoveAt(0);
81: ultraCurrencyEditor.ButtonsLeft.RemoveAt(0);
82: ultraDateTimeEditor.ButtonsLeft.RemoveAt(0);
83: ultraFontNameEditor.ButtonsLeft.RemoveAt(0);
84: ultraFormattedTextEditor.ButtonsLeft.RemoveAt(0);
85: ultraMaskedEdit.ButtonsLeft.RemoveAt(0);
86: ultraNumericEditor.ButtonsLeft.RemoveAt(0);
87: ultraTextEditor.ButtonsLeft.RemoveAt(0);
88: ultraTimeSpanEditor.ButtonsLeft.RemoveAt(0);
89: ultraTimeZoneEditor.ButtonsLeft.RemoveAt(0);
90: }
91:
92: var button2 = new EditorButton();
93:
94:// Add /Remove RIGHT button
95:if (ultraCalculatorDropDown.ButtonsRight.Count
96: {
97: ultraCalculatorDropDown.ButtonsRight.Add(button2);
98: ultraColorPicker.ButtonsRight.Add(button2);
99: ultraCombo.ButtonsRight.Add(button2);
100: ultraComboEditor.ButtonsRight.Add(button2);
101: ultraCurrencyEditor.ButtonsRight.Add(button2);
102: ultraDateTimeEditor.ButtonsRight.Add(button2);
103: ultraFontNameEditor.ButtonsRight.Add(button2);
104: ultraFormattedTextEditor.ButtonsRight.Add(button2);
105: ultraMaskedEdit.ButtonsRight.Add(button2);
106: ultraNumericEditor.ButtonsRight.Add(button2);
107: ultraTextEditor.ButtonsRight.Add(button2);
108: ultraTimeSpanEditor.ButtonsRight.Add(button2);
109: ultraTimeZoneEditor.ButtonsRight.Add(button2);
110: }
111:else
112: {
113: ultraCalculatorDropDown.ButtonsRight.RemoveAt(0);
114: ultraColorPicker.ButtonsRight.RemoveAt(0);
115: ultraCombo.ButtonsRight.RemoveAt(0);
116: ultraComboEditor.ButtonsRight.RemoveAt(0);
117: ultraCurrencyEditor.ButtonsRight.RemoveAt(0);
118: ultraDateTimeEditor.ButtonsRight.RemoveAt(0);
119: ultraFontNameEditor.ButtonsRight.RemoveAt(0);
120: ultraFormattedTextEditor.ButtonsRight.RemoveAt(0);
121: ultraMaskedEdit.ButtonsRight.RemoveAt(0);
122: ultraNumericEditor.ButtonsRight.RemoveAt(0);
123: ultraTextEditor.ButtonsRight.RemoveAt(0);
124: ultraTimeSpanEditor.ButtonsRight.RemoveAt(0);
125: ultraTimeZoneEditor.ButtonsRight.RemoveAt(0);
126: }
127: }
128:
129:
130:// Add/Remove Spin button
131:privatevoid UltraCheckEditorAddSpinButtonCheckedChanged(object sender, EventArgs e)
132: {
133://var spinButton = new SpinEditorButton { Orientation = Orientation.Horizontal };
134:
135:// Add /Remove SPIN button
136: ultraCurrencyEditor.SpinButtonDisplayStyle =
137: ultraCurrencyEditor.SpinButtonDisplayStyle != ButtonDisplayStyle.Always
138: ? ButtonDisplayStyle.Always
139: : ButtonDisplayStyle.Never;
140:
141: ultraDateTimeEditor.SpinButtonDisplayStyle =
142: ultraDateTimeEditor.SpinButtonDisplayStyle != ButtonDisplayStyle.Always
143: ? ButtonDisplayStyle.Always
144: : ButtonDisplayStyle.Never;
145:
146: ultraMaskedEdit.SpinButtonDisplayStyle =
147: ultraMaskedEdit.SpinButtonDisplayStyle == SpinButtonDisplayStyle.None
148: ? SpinButtonDisplayStyle.OnRight
149: : SpinButtonDisplayStyle.None;
150:
151: ultraNumericEditor.SpinButtonDisplayStyle =
152: ultraNumericEditor.SpinButtonDisplayStyle != ButtonDisplayStyle.Always
153: ? ButtonDisplayStyle.Always
154: : ButtonDisplayStyle.Never;
155: }
156:
157:
158:// Change the color of RadioButton's label
159:privatevoid UltraOptionSetValueChanged(object sender, EventArgs e)
160: {
161: ultraLabel_UltraOptionSet.ForeColor = ultraOptionSet.CheckedItem.DataValue.ToString()
162: == "Red" ? Color.Red : Color.Blue;
163: }
164:
165:
166:// Display the selected font on the label in front of the control
167:privatevoid UltraFontNameEditorValueChanged(object sender, EventArgs e)
168: {
169: ultraLabel_UltraFontNameEditor.Appearance.FontData.Name = ultraFontNameEditor.Value.ToString();
170: }
171:#endregion
172:
173:#region WinGrid Elements events
174:// Enable/Disable Row filters
175:privatevoid UltraCheckEditorRowFilteringCheckedChanged(object sender, EventArgs e)
176: {
177: ultraGrid1.DisplayLayout.Override.AllowRowFiltering =
178: ultraGrid1.DisplayLayout.Override.AllowRowFiltering != DefaultableBoolean.True
179: ? DefaultableBoolean.True
180: : DefaultableBoolean.False;
181: }
182:
183:
184:// Enable/Desable Fixed header indicator
185:privatevoid UltraCheckEditorEnableFixedHeaderCheckedChanged(object sender, EventArgs e)
186: {
187: ultraGrid1.DisplayLayout.UseFixedHeaders =
188: ultraGrid1.DisplayLayout.UseFixedHeaders != true;
189: }
190:
191:
192:// Enable/Desable Row selectors
193:privatevoid UltraCheckEditorEnableRowSelectorsCheckedChanged(object sender, EventArgs e)
194: {
195: ultraGrid1.DisplayLayout.Bands[0].Override.RowSelectors =
196: ultraGrid1.DisplayLayout.Bands[0].Override.RowSelectors != DefaultableBoolean.Default
197: ? DefaultableBoolean.Default
198: : DefaultableBoolean.False;
199: }
200:
201:
202:// Enable/Desable header CheckBox
203:privatevoid UltraCheckEditorEnableHeaderCheckBoxCheckedChanged(object sender, EventArgs e)
204: {
205: ultraGrid1.DisplayLayout.Override.HeaderCheckBoxVisibility =
206: ultraGrid1.DisplayLayout.Override.HeaderCheckBoxVisibility != HeaderCheckBoxVisibility.Always
207: ? HeaderCheckBoxVisibility.Always
208: : HeaderCheckBoxVisibility.Default;
209: }
210:
211:
212:// Enable/Desable Filter Operator on the FilterRow.
213:privatevoid UltraCheckEditorEnableFilterOperatorCheckedChanged(object sender, EventArgs e)
214: {
215: ultraGrid1.DisplayLayout.Override.FilterUIType =
216: ultraGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow
217: ? FilterUIType.FilterRow
218: : FilterUIType.Default;
219: }
220:
221:
222:// Enable/Desable Column chooser
223:privatevoid UltraCheckEditorEnableColumnChooserCheckedChanged(object sender, EventArgs e)
224: {
225: ultraGrid1.DisplayLayout.Override.RowSelectorHeaderStyle =
226: ultraGrid1.DisplayLayout.Override.RowSelectorHeaderStyle != RowSelectorHeaderStyle.ColumnChooserButton
227: ? RowSelectorHeaderStyle.ColumnChooserButton
228: : RowSelectorHeaderStyle.Default;
229: }
230:
231:
232:// Enable/Desable column Swapping
233:privatevoid UltraCheckEditorEnableColumnSwappingCheckedChanged(object sender, EventArgs e)
234: {
235: ultraGrid1.DisplayLayout.Override.AllowColSwapping =
236: ultraGrid1.DisplayLayout.Override.AllowColSwapping != AllowColSwapping.WithinBand
237: ? AllowColSwapping.WithinBand
238: : AllowColSwapping.Default;
239: }
240:
241:
242:// Enable/Desable Row expansion indicator.
243:privatevoid UltraCheckEditorExpansionIndicatorCheckedChanged(object sender, EventArgs e)
244: {
245: ultraGrid1.DisplayLayout.Override.ExpansionIndicator =
246: ultraGrid1.DisplayLayout.Override.ExpansionIndicator != ShowExpansionIndicator.Always
247: ? ShowExpansionIndicator.Always
248: : ShowExpansionIndicator.Never;
249: }
250:
251:
252:// Enable/Desable Row selector edit template
253:privatevoid UltraCheckEditorRowSelectorEditTemplateCheckedChanged(object sender, EventArgs e)
254: {
255: ultraGrid1.DisplayLayout.Override.RowEditTemplateUIType =
256: ultraGrid1.DisplayLayout.Override.RowEditTemplateUIType != RowEditTemplateUIType.RowSelectorImage
257: ? RowEditTemplateUIType.RowSelectorImage
258: : RowEditTemplateUIType.Default;
259: }
260:
261:
262:// Switch to CardView
263:privatevoid UltraCheckEditorSwitchToCardViewCheckedChanged(object sender, EventArgs e)
264: {
265: ultraGrid1.DisplayLayout.Bands[0].CardView = !ultraGrid1.DisplayLayout.Bands[0].CardView;
266: }
267:
268:
269:// Select an item for FixedRowIndicator from the ComboBox.
270:// if the FixedRowIndicator = "Button" it will appear on the row selector.
271:privatevoid UltraComboEditorFixedRowIndicatorValueChanged(object sender, EventArgs e)
272: {
273: var cb = ultraComboEditor_FixedRowIndicator;
274:if (cb == null || cb.SelectedItem == null) return;
275:
276:// Hint: Use DataValue instead of DataText if you are retrieving an item, because DataText gets localized.
277: ultraGrid1.DisplayLayout.Override.FixedRowIndicator = (FixedRowIndicator)cb.SelectedIndex;
278: }
279:
280:
281:// Select CardView style
282:privatevoid UltraComboEditorSelectCardViewStyleValueChanged(object sender, EventArgs e)
283: {
284: var cb2 = ultraComboEditor_SelectCardViewStyle;
285:if (cb2 == null) return;
286:
287: ultraGrid1.DisplayLayout.Bands[0].CardSettings.Style = (CardStyle)cb2.SelectedIndex;
288: }
289:
290:
291:// Enamble/Desable Row summary button
292:privatevoid UltraComboEditorEnableSummaryValueChanged(object sender, EventArgs e)
293: {
294: var cb3 = ultraComboEditor_EnableSummary;
295:if (cb3 == null) return;
296:
297: ultraGrid1.DisplayLayout.Override.AllowRowSummaries = (AllowRowSummaries)cb3.SelectedIndex;
298: }
299:
300:#region BtnEnableTouchClick
301:privatevoid BtnEnableTouchClick(object sender, EventArgs e)
302: {
303: ultraTouchProvider1.Enabled = !ultraTouchProvider1.Enabled;
304: btnEnableTouch.Text = ultraTouchProvider1.Enabled ? Properties.Resources.Button_Disable_Touch : Properties.Resources.Button_Enable_Touch;
305:
306: }
307:#endregion
308: }
309:#endregion
310: }
Touch WinListView And Tree
1:using System;
2:using System.Drawing;
3:using System.IO;
4:using System.Windows.Forms;
5:using Infragistics.Win.UltraWinListView;
6:using Infragistics.Win.UltraWinTree;
7:
8:namespace TouchEnabledListViewAndTree.CS
9: {
10:publicpartialclass TouchForm : Form
11: {
12:#region Private Members
13:privatereadonly ImageList _imageList1;
14:privatereadonlystring _imagePath = Application.ExecutablePath + "\\..\\..\\..\\..\\Images\\";
15: private const string ImageSuffix = ".png";
16: #endregion
17:
18: #region Constructor
19: public TouchForm()
20: {
21: InitializeComponent();
22: _imageList1 = new ImageList();
23: }
24: #endregion
25:
26: #region Public Methods
27:
28: #region PopulateWinList
29: // Populate WinListView with local directory and files
30: public void PopulateWinList()
31: {
32: // Add some UltraListViewSubItemColumns to the control's SubItemColumns collection
33: // to represent the file type, and date modified
34: UltraListViewSubItemColumn colFileType = ultraListView1.SubItemColumns.Add(Properties.Resources.UltraListView_FileType);
35: UltraListViewSubItemColumn colDateModified = ultraListView1.SubItemColumns.Add(Properties.Resources.UltraListView_DateModified);
36:
37:
38: // FileType...
39: // Set the DataType property to string
40: colFileType.DataType = typeof(string);
41:
42:
43: // Set the Text property to "Type"
44: colFileType.Text = Properties.Resources.UltraListView_Type;
45:
46:
47: // DateModified...
48: // Set the DataType property to DateTime
49: colDateModified.DataType = typeof(DateTime);
50:
51:
52: // Set the Text property to "Date Modified"
53: colDateModified.Text = Properties.Resources.UltraListView_DateModified;
54:
55:
56: // Set the Format property so that we display the short representation of
57: // the date and time, appropriate for the current culture
58: var shortDateFormat = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
59: var shortTimeFormat = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern;
60: colDateModified.Format = string.Format("{0} {1}", shortDateFormat, shortTimeFormat);
61:
62:
63: // MainColumn...
64: // Set the DataType to string
65: ultraListView1.MainColumn.DataType = typeof(string);
66:
67:
68: // Set the Text property to "Name"
69: ultraListView1.MainColumn.Text = Properties.Resources.UltraListView_Name;
70:
71:
72: // Add an appearance for the folder images, assigning to the folder items' Appearance
73: Infragistics.Win.Appearance appearance = ultraListView1.Appearances.Add(Properties.Resources.UltraListView_Folder);
74:
75: if (appearance != null)
76: {
77: appearance.Image = new Bitmap(_imagePath + "Folder" + ImageSuffix);
78: }
79:
80: // Get a DirectoryInfo object that represents the C drive of the local machine
81: var cDriveInfo = new DirectoryInfo("C:\\");
82:
83:
84: // Get the directories and files
85: DirectoryInfo[] directories = cDriveInfo.GetDirectories();
86: FileInfo[] files = cDriveInfo.GetFiles();
87:
88:
89: // Iterate the directories and add an item for each one
90: for (int i = 0; i
91: {
92: DirectoryInfo directoryInfo = directories[i];
93:
94: UltraListViewItem item = ultraListView1.Items.Add(directoryInfo.FullName, directoryInfo.Name);
95: item.SubItems["FileType"].Value = Properties.Resources.UltraListView_File_Folder;
96: item.SubItems["DateModified"].Value = directoryInfo.LastWriteTime;
97: item.Appearance = ultraListView1.Appearances[Properties.Resources.UltraListView_Folder];
98: }
99:
100: // Iterate the files and add an item for each one
101: for (int i = 0; i
102: {
103: FileInfo fileInfo = files[i];
104:
105: UltraListViewItem item = ultraListView1.Items.Add(fileInfo.FullName, fileInfo.Name);
106: item.SubItems["FileType"].Value = Properties.Resources.UltraListView_File;
107: item.SubItems["DateModified"].Value = fileInfo.LastWriteTime;
108:
109:// Check to see if the image collection contains an image for this extension, using the extension as a key.
110:if (!_imageList1.Images.ContainsKey(fileInfo.Extension))
111: {
112:// Set an icon for the file.
113: var iconForFile = Icon.ExtractAssociatedIcon(fileInfo.FullName);
114:
115:if (iconForFile != null)
116: _imageList1.Images.Add(fileInfo.Extension, iconForFile);
117: }
118: _imageList1.ImageSize = new Size(256, 256);
119: item.Appearance.Image = _imageList1.Images[fileInfo.Extension];
120: }
121: ultraListView1.EndUpdate();
122: }
123:#endregion
124:
125:#endregion
126:
127:#region Events
128:
129:#region TouchFormLoad
130:privatevoid TouchFormLoad(object sender, EventArgs e)
131: {
132: PopulateWinList();
133:
134:// Data Bind.
135: ultraTree1.DataSource = new Library().Categories;
136:
137:// Initialize the ComboEditors with default display values.
138: UltraComboEditor_UltraTreeViewStyle.SelectedIndex = 4;
139: UltraComboEditor_UltraTreeNodeStyle.SelectedIndex = 4;
140: UltraComboEditor_UltraListViewStyle.SelectedIndex = 1;
141: }
142:#endregion
143:
144:#region BtnEnableTouchClick
145:privatevoid BtnEnableTouchClick(object sender, EventArgs e)
146: {
147: ultraTouchProvider1.Enabled = !ultraTouchProvider1.Enabled;
148: btnEnableTouch.Text = ultraTouchProvider1.Enabled ? Properties.Resources.Button_Disable_Touch : Properties.Resources.Button_Enable_Touch;
149: }
150:#endregion
151:
152:#region UltraComboEditorUltraListViewStyleValueChanged
153:// Set UltraListView style
154:privatevoid UltraComboEditorUltraListViewStyleValueChanged(object sender, EventArgs e)
155: {
156: var cb = UltraComboEditor_UltraListViewStyle;
157:if (cb == null || cb.SelectedItem == null)
158:return;
159: ultraListView1.View = (UltraListViewStyle)cb.SelectedIndex;
160: }
161:#endregion
162:
163:#region UltraCheckEditorCheckedChanged
164:// Enable Checkboxes for UltraListView (Only with Details or List view)
165:privatevoid UltraCheckEditorCheckedChanged(object sender, EventArgs e)
166: {
167:if (UltraCheckEditor_EnableCheckboxes.Checked)
168: {
169: ultraListView1.ViewSettingsDetails.CheckBoxStyle = CheckBoxStyle.CheckBox;
170: ultraListView1.ViewSettingsList.CheckBoxStyle = CheckBoxStyle.CheckBox;
171: }
172:else
173: {
174: ultraListView1.ViewSettingsDetails.CheckBoxStyle = CheckBoxStyle.None;
175: ultraListView1.ViewSettingsList.CheckBoxStyle = CheckBoxStyle.None;
176: }
177: }
178:#endregion
179:
180:#region UltraComboEditorUltraTreeNodeStyleValueChanged
181:// Set UltraTree Node style (Only with Standard View)
182:privatevoid UltraComboEditorUltraTreeNodeStyleValueChanged(object sender, EventArgs e)
183: {
184: var cb = UltraComboEditor_UltraTreeNodeStyle;
185:if (cb == null || cb.SelectedItem == null)
186:return;
187: ultraTree1.Override.NodeStyle = (NodeStyle)cb.SelectedIndex;
188: }
189:#endregion
190:
191:#region UltraComboEditorUltraTreeViewStyleValueChanged
192:// Set UltraTree View style
193:privatevoid UltraComboEditorUltraTreeViewStyleValueChanged(object sender, EventArgs e)
194: {
195: var cb = UltraComboEditor_UltraTreeViewStyle;
196:if (cb == null || cb.SelectedItem == null)
197:return;
198: ultraTree1.ViewStyle = (ViewStyle)cb.SelectedIndex;
199: }
200:#endregion
201:
202:#endregion
203: }
204: }
To play around with the Infragistics Windows Forms touch enabled applications on your own, be sure to get Infragistics Ultimate and see the chart in action in our latest sample application by clicking the banner below!