//</snippet1> // The following method shows the use of the DpiX and DpiY // properties. This example is designed for use with a Windows Form. // To run this example, paste it into a form that contains a ListBox named // listBox1 and call this method from the form's constructor or Load event. //<snippet4> private void PopulateListBoxWithGraphicsResolution() { Graphics boxGraphics = listBox1.CreateGraphics(); Graphics formGraphics = this.CreateGraphics(); listBox1.Items.Add("ListBox horizontal resolution: " + boxGraphics.DpiX); listBox1.Items.Add("ListBox vertical resolution: " + boxGraphics.DpiY); boxGraphics.Dispose(); }
public Printer() { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); // A graphic context will prove handy to align text. graphics = listBox.CreateGraphics(); emptyLinesAtTop = lines; lastPrintedColumn = Column.Instruction; // It is very important to measure the strings using a formatter that takes trailing // spaces into account. Otherwise we would end up padding too much, and the trailing // spaces would disappear. stringFormatter.FormatFlags = StringFormatFlags.MeasureTrailingSpaces; }
/// <summary> /// Add messages to Log /// </summary> /// <param name="dateTime">Time Stamp</param> /// <param name="message">String message that needs to be added</param> public void AddMessageToLog(DateTime dateTime, string message) { if (message != null) { log.Items.Add(dateTime.ToString() + " " + message); log.SelectedIndex = log.Items.Count - 1; toolBarSave.Enabled = toolBarClear.Enabled = true; log.HorizontalScrollbar = true; Graphics g = log.CreateGraphics(); int hzSize = (int)g.MeasureString(dateTime.ToString() + " " + message, log.Font).Width; if (hzSize > log.HorizontalExtent) { log.HorizontalExtent = hzSize; } // This should only have to execute once. while (log.Items.Count > maxMessages) { log.Items.RemoveAt(0); } } }
//<Snippet1> private void DisplayHScroll() { // Make sure no items are displayed partially. listBox1.IntegralHeight = true; // Add items that are wide to the ListBox. for (int x = 0; x < 10; x++) { listBox1.Items.Add("Item " + x.ToString() + " is a very large value that requires scroll bars"); } // Display a horizontal scroll bar. listBox1.HorizontalScrollbar = true; // Create a Graphics object to use when determining the size of the largest item in the ListBox. Graphics g = listBox1.CreateGraphics(); // Determine the size for HorizontalExtent using the MeasureString method using the last item in the list. int hzSize = (int)g.MeasureString(listBox1.Items[listBox1.Items.Count - 1].ToString(), listBox1.Font).Width; // Set the HorizontalExtent property. listBox1.HorizontalExtent = hzSize; }
// Fix for Dev10 Bug 592077: Display Horizontal Scroll bar if the name exceeds the container. internal static void DisplayHScrollOnListBoxIfNecessary(ListBox listBox) { // Display a horizontal scroll bar if necessary. listBox.HorizontalScrollbar = true; // Create a Graphics object to use when determining the size of the largest item in the ListBox. var g = listBox.CreateGraphics(); // Determine the size for HorizontalExtent using the MeasureString method. var maxHorizontalSize = -1; for (var i = 0; i < listBox.Items.Count; i++) { var hzSize = (int)g.MeasureString(listBox.Items[i].ToString(), listBox.Font).Width; if (hzSize > maxHorizontalSize) { maxHorizontalSize = hzSize; } } // Set the HorizontalExtent property. if (maxHorizontalSize != -1) { listBox.HorizontalExtent = maxHorizontalSize; } }
public void generateLadderFromSelection(double parentMZ, List <LadderInstance> currentListInstances) { m_currentInstances = currentListInstances; m_currentParentMZ = parentMZ; m_currentlyDrawing = true; // This is a counter the fragment ladder instances int i = 0; // This is a counter for the list boxes. int listBoxCounter = 0; //this.columnCheckedListBox.Items.AddRange(currentListInstances[0].mzValueHeaders.ToArray()); tabControl1.TabPages.Clear(); tabControl1.Visible = false; tabControl1.TabPages.Add("Original"); int indexOfFirstHalfEnd = 0; //find index of first non "b" checked item for (int j = 0; j < columnCheckedListBox.CheckedItems.Count; j++) { if (columnCheckedListBox.CheckedItems[j].ToString()[0] != 'b' && columnCheckedListBox.CheckedItems[j].ToString()[0] != 'c') { indexOfFirstHalfEnd = j; break; } } if (columnCheckedListBox.CheckedItems.Count != 0) { if (indexOfFirstHalfEnd == 0 && columnCheckedListBox.CheckedItems[columnCheckedListBox.CheckedItems.Count - 1].ToString()[0] == 'b') { indexOfFirstHalfEnd = columnCheckedListBox.CheckedItems.Count; } } if (currentListInstances != null) { foreach (LadderInstance currentInstance in currentListInstances) { // If plot is detached this value is incremented for each list box that represents // an ion series. For vertical fragment ladder orientation. int xListBoxPosition = 6; // If plot is detached this value is incremented for each list box that represents // an ion series. For horizontal fragment ladder orientation. int yListBoxPosition = 6; if (i > 0) { tabControl1.TabPages.Add("Modified" + i.ToString()); } ListBox tempListBox = new System.Windows.Forms.ListBox(); //print all b or c ions that exist before the peptide sequence for (int index = 0; index < indexOfFirstHalfEnd; index++) { //if (i == tabControl1.SelectedIndex) peptideEditorTextBox.Text = currentInstance.PeptideString.ToString(); tempListBox = new System.Windows.Forms.ListBox(); tempListBox.BackColor = System.Drawing.SystemColors.Control; tempListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; tempListBox.ColumnWidth = 40; tempListBox.FormattingEnabled = true; tempListBox.Location = new System.Drawing.Point(xListBoxPosition, yListBoxPosition); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.MultiColumn = true; } else { tempListBox.MultiColumn = false; } tempListBox.Size = new System.Drawing.Size(45, 15); tempListBox.BorderStyle = BorderStyle.None; tempListBox.DrawMode = DrawMode.OwnerDrawFixed; tempListBox.DrawItem += new DrawItemEventHandler(tempListBox_DrawItem); tempListBox.Click += new EventHandler(tempListBox_Click); tempListBox.DoubleClick += new EventHandler(tempListBox_DoubleClick); tempListBox.Items.Add(columnCheckedListBox.CheckedItems[index].ToString()); for (int ind = 0; ind < currentInstance.mzValueHeaders.Count; ind++) { if (currentInstance.mzValueHeaders[ind] == columnCheckedListBox.CheckedItems[index].ToString()) { listBoxCounter = ind; } } // Reverse Array for y and z series //This Reverse stuff should really be done in the ladder Instance Builder. /*if ((columnCheckedListBox.CheckedItems[index].ToString().Contains("y")) || * (columnCheckedListBox.CheckedItems[index].ToString().Contains("z"))) * { * string[] tempArray = currentInstance.mzValue[listBoxCounter]; * int findNonNull = 0; * while ((findNonNull < tempArray.Length) && (tempArray[findNonNull] == "")) ++findNonNull; * string[] splittedSubArrayOne = tempArray[findNonNull].Split('|'); * string[] splittedSubArrayTwo = tempArray[(findNonNull + 1)].Split('|'); * double outValue1 = 0.0; * double outValue2 = 0.0; * * double.TryParse(splittedSubArrayOne[0], out outValue1); * double.TryParse(splittedSubArrayTwo[0], out outValue2); * if (outValue2 > outValue1) * { * Array.Reverse(tempArray); * } * tempListBox.Items.AddRange(tempArray); * } * else * {*/ int currentLadderValueIndex = 0; while (currentLadderValueIndex < currentInstance.mzValue[listBoxCounter].Length) { if (currentInstance.mzValue[listBoxCounter][currentLadderValueIndex] == "") { tempListBox.Items.Insert((currentLadderValueIndex + 1), ""); } else { tempListBox.Items.Insert((currentLadderValueIndex + 1), currentInstance.mzValue[listBoxCounter][currentLadderValueIndex]); } ++currentLadderValueIndex; } //} /**************This is to find the largest string. **************/ Graphics g = tempListBox.CreateGraphics(); SizeF largestSize = g.MeasureString(tempListBox.Items[0].ToString(), tempListBox.Font); for (int k = 1; k < tempListBox.Items.Count; ++k) { string tempString = tempListBox.Items[k].ToString(); if (tempString != "") { if (largestSize.Width < g.MeasureString(tempString.Split('|')[0], tempListBox.Font).Width) { largestSize = g.MeasureString(tempString.Split('|')[0], tempListBox.Font); } } } if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.Size = new System.Drawing.Size(((tempListBox.Items.Count * 40) + 40), 13); } else { tempListBox.Size = new System.Drawing.Size((int)largestSize.Width, ((tempListBox.Items.Count * 13) + 15)); } tempListBox.Location = new Point(xListBoxPosition, yListBoxPosition); /**************************************************/ if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { yListBoxPosition += 20 + 3; } else { xListBoxPosition += (int)largestSize.Width + 3; } tabControl1.TabPages[i].CreateControl(); tabControl1.TabPages[i].Controls.Add(tempListBox); } //print the index from the front of the peptide sequence tempListBox = new System.Windows.Forms.ListBox(); tempListBox.BackColor = System.Drawing.SystemColors.Control; tempListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; tempListBox.ColumnWidth = 40; tempListBox.FormattingEnabled = true; tempListBox.Location = new System.Drawing.Point(xListBoxPosition, yListBoxPosition); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.MultiColumn = true; } else { tempListBox.MultiColumn = false; } tempListBox.Size = new System.Drawing.Size(45, 15); tempListBox.BorderStyle = BorderStyle.None; tempListBox.Click += new EventHandler(tempListBox_Click); tempListBox.Items.Add((object)(" ")); int lengthMinusMods = 0; String modificationList = "*+@!&#$%~`"; //calculate length of string minus modifications foreach (char curChar in currentInstance.PeptideString.ToCharArray()) { if (!modificationList.Contains(curChar)) { lengthMinusMods++; } } for (int peptideIndex = 0; peptideIndex < lengthMinusMods; peptideIndex++) { String indexStr = (peptideIndex + 1).ToString(); tempListBox.Items.Add((object)indexStr); } if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.Size = new System.Drawing.Size(((tempListBox.Items.Count * 40) + 40), 13); } else { tempListBox.Size = new System.Drawing.Size(40, ((tempListBox.Items.Count * 13) + 15)); } tempListBox.Location = new Point(xListBoxPosition, yListBoxPosition); tabControl1.TabPages[i].CreateControl(); tabControl1.TabPages[i].Controls.Add(tempListBox); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { yListBoxPosition += 20 + 3; } else { xListBoxPosition += 40 + 3; } //draw the peptide sequence tempListBox = new System.Windows.Forms.ListBox(); tempListBox.BackColor = System.Drawing.SystemColors.Control; tempListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; tempListBox.ColumnWidth = 40; tempListBox.FormattingEnabled = true; tempListBox.Location = new System.Drawing.Point(xListBoxPosition, yListBoxPosition); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.MultiColumn = true; } else { tempListBox.MultiColumn = false; } tempListBox.Size = new System.Drawing.Size(45, 15); tempListBox.BorderStyle = BorderStyle.None; tempListBox.Click += new EventHandler(tempListBox_Click); char[] peptide = currentInstance.PeptideString.ToCharArray(); tempListBox.Items.Add(" "); for (int peptideStringIndex = 0; peptideStringIndex < peptide.Length; ++peptideStringIndex) { string aminoAcidCode = " " + peptide[peptideStringIndex]; if ((peptideStringIndex + 1) < peptide.Length && this.fragmentLadderOptions.modificationList.ContainsKey(peptide[(peptideStringIndex + 1)])) { aminoAcidCode += peptide[(peptideStringIndex + 1)]; ++peptideStringIndex; } tempListBox.Items.Add(aminoAcidCode); } if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.Size = new System.Drawing.Size(((tempListBox.Items.Count * 40) + 40), 13); } else { tempListBox.Size = new System.Drawing.Size(40, ((tempListBox.Items.Count * 13) + 15)); } tempListBox.Location = new Point(xListBoxPosition, yListBoxPosition); tabControl1.TabPages[i].CreateControl(); tabControl1.TabPages[i].Controls.Add(tempListBox); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { yListBoxPosition += 20 + 3; } else { xListBoxPosition += 40 + 3; } //end drawing peptide sequence //print the index from the front of the peptide sequence tempListBox = new System.Windows.Forms.ListBox(); tempListBox.BackColor = System.Drawing.SystemColors.Control; tempListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; tempListBox.ColumnWidth = 40; tempListBox.FormattingEnabled = true; tempListBox.Location = new System.Drawing.Point(xListBoxPosition, yListBoxPosition); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.MultiColumn = true; } else { tempListBox.MultiColumn = false; } tempListBox.Size = new System.Drawing.Size(45, 15); tempListBox.BorderStyle = BorderStyle.None; tempListBox.Click += new EventHandler(tempListBox_Click); tempListBox.Items.Add((object)(" ")); for (int peptideIndex = 0; peptideIndex < lengthMinusMods; peptideIndex++) { String indexStr = (lengthMinusMods - peptideIndex).ToString(); tempListBox.Items.Add((object)indexStr); } if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.Size = new System.Drawing.Size(((tempListBox.Items.Count * 40) + 40), 13); } else { tempListBox.Size = new System.Drawing.Size(40, ((tempListBox.Items.Count * 13) + 15)); } tempListBox.Location = new Point(xListBoxPosition, yListBoxPosition); tabControl1.TabPages[i].CreateControl(); tabControl1.TabPages[i].Controls.Add(tempListBox); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { yListBoxPosition += 20 + 3; } else { xListBoxPosition += 40 + 3; } //draw the y or z ions that occur after the peptide sequence for (int index = indexOfFirstHalfEnd; index < columnCheckedListBox.CheckedItems.Count; index++) { //if (i == tabControl1.SelectedIndex) peptideEditorTextBox.Text = currentInstance.PeptideString.ToString(); tempListBox = new System.Windows.Forms.ListBox(); tempListBox.BackColor = System.Drawing.SystemColors.Control; tempListBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; tempListBox.ColumnWidth = 40; tempListBox.FormattingEnabled = true; tempListBox.Location = new System.Drawing.Point(xListBoxPosition, yListBoxPosition); if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.MultiColumn = true; } else { tempListBox.MultiColumn = false; } tempListBox.Size = new System.Drawing.Size(45, 15); tempListBox.BorderStyle = BorderStyle.None; tempListBox.DrawMode = DrawMode.OwnerDrawFixed; tempListBox.DrawItem += new DrawItemEventHandler(tempListBox_DrawItem); tempListBox.Click += new EventHandler(tempListBox_Click); tempListBox.DoubleClick += new EventHandler(tempListBox_DoubleClick); tempListBox.Items.Add(columnCheckedListBox.CheckedItems[index].ToString()); for (int ind = 0; ind < currentInstance.mzValueHeaders.Count; ind++) { if (currentInstance.mzValueHeaders[ind] == columnCheckedListBox.CheckedItems[index].ToString()) { listBoxCounter = ind; } } // Reverse Array for y and z series //This Reverse stuff should really be done in the ladder Instance Builder. /*if ((columnCheckedListBox.CheckedItems[index].ToString().Contains("y")) || * (columnCheckedListBox.CheckedItems[index].ToString().Contains("z"))) * {*/ string[] tempArray = currentInstance.mzValue[listBoxCounter]; int findNonNull = 0; while ((findNonNull < tempArray.Length) && (tempArray[findNonNull] == "")) { ++findNonNull; } string[] splittedSubArrayOne = tempArray[findNonNull].Split('|'); string[] splittedSubArrayTwo = tempArray[(findNonNull + 1)].Split('|'); double outValue1 = 0.0; double outValue2 = 0.0; double.TryParse(splittedSubArrayOne[0], out outValue1); double.TryParse(splittedSubArrayTwo[0], out outValue2); if (outValue2 > outValue1) { Array.Reverse(tempArray); } tempListBox.Items.AddRange(tempArray); /*} * else * { * int currentLadderValueIndex = 0; * while (currentLadderValueIndex < currentInstance.mzValue[listBoxCounter].Length) * { * if (currentInstance.mzValue[listBoxCounter][currentLadderValueIndex] == "") * { * tempListBox.Items.Insert((currentLadderValueIndex + 1), ""); * } * else * { * tempListBox.Items.Insert((currentLadderValueIndex + 1), currentInstance.mzValue[listBoxCounter][currentLadderValueIndex]); * } ++currentLadderValueIndex; * } * }*/ /**************This is to find the largest string. **************/ Graphics g = tempListBox.CreateGraphics(); SizeF largestSize = g.MeasureString(tempListBox.Items[0].ToString(), tempListBox.Font); for (int k = 1; k < tempListBox.Items.Count; ++k) { string tempString = tempListBox.Items[k].ToString(); if (tempString != "") { if (largestSize.Width < g.MeasureString(tempString.Split('|')[0], tempListBox.Font).Width) { largestSize = g.MeasureString(tempString.Split('|')[0], tempListBox.Font); } } } if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { tempListBox.Size = new System.Drawing.Size(((tempListBox.Items.Count * 40) + 40), 13); } else { tempListBox.Size = new System.Drawing.Size((int)largestSize.Width, ((tempListBox.Items.Count * 13) + 15)); } tempListBox.Location = new Point(xListBoxPosition, yListBoxPosition); /**************************************************/ if (!m_manager.m_mainForm.m_currentOptions.isPlotInMainForm)// m_fragmentLadderOptions.plotDetached) { yListBoxPosition += 20 + 3; } else { xListBoxPosition += (int)largestSize.Width + 3; } tabControl1.TabPages[i].CreateControl(); tabControl1.TabPages[i].Controls.Add(tempListBox); } tabControl1.TabPages[i].AutoScroll = true; tabControl1.SelectedIndex = i; ++i; } } tabControl1.SelectedIndex = 0; tabControl1.Visible = true; m_currentlyDrawing = false; }
/// <summary> /// Edits the specified object's value using the editor style indicated by the /// System.Drawing.Design.UITypeEditor.GetEditStyle() method</summary> /// <param name="context">An System.ComponentModel.ITypeDescriptorContext that can be used to gain /// additional context information</param> /// <param name="provider">An System.IServiceProvider that this editor can use to obtain services</param> /// <param name="value">The object to edit</param> /// <returns>The new value of the object. If the value of the object has not changed, this should /// return the same object it was passed.</returns> public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { m_editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; if (m_editorService != null) { ListBox listBox = new ListBox(); listBox.DrawMode = DrawMode.OwnerDrawFixed; listBox.DrawItem += listBox_DrawItem; listBox.MouseMove += listBox_MouseMove; for (int i = 0; i < m_names.Length; i++) { listBox.Items.Add(m_names[i]); if (m_names[i].Equals(value) || m_values[i].Equals(value)) { listBox.SelectedIndex = i; } } // size control so all strings are completely visible using (Graphics g = listBox.CreateGraphics()) { float width = 0f; foreach (string name in m_names) { float w = g.MeasureString(name, listBox.Font).Width; width = Math.Max(width, w); } float height = m_names.Length * listBox.ItemHeight; int scrollBarThickness = SystemInformation.VerticalScrollBarWidth; if (height > listBox.Height - 4) // vertical scrollbar? width += SystemInformation.VerticalScrollBarWidth; if (width > listBox.Width) listBox.Width = (int)width + 6; } listBox.SelectedIndexChanged += listBox_SelectedIndexChanged; listBox.MouseDown += listBox_OnMouseDown; listBox.MouseUp += listBox_OnMouseUp; listBox.MouseLeave += listBox_OnMouseLeave; listBox.PreviewKeyDown += listBox_OnPreviewKeyDown; m_editorService.DropDownControl(listBox); int index = listBox.SelectedIndex; if (index >= 0) { object newValue = null; if (value is int) newValue = m_values[index]; else newValue = m_names[index]; // be careful to return the same object if the value didn't change if (!newValue.Equals(value)) value = newValue; } } return value; }
private void ResizeToFit(ListBox list, string message) { using (var gfx = list.CreateGraphics()) { var size = gfx.MeasureString(message, list.Font); var w = (int)Math.Ceiling(size.Width); list.Width = Math.Max(list.Width, w); list.Height = list.PreferredHeight; } Width = list.Width + (list.Left * 2); Height = list.Height + (list.Top * 2); }
private void ListBox_initWidth(ListBox listBox) { int width = 0; Graphics g = listBox.CreateGraphics(); foreach (object item in listBox.Items) { string text = item.ToString(); SizeF s = g.MeasureString(text, listBox.Font); if (s.Width > width) width = (int)s.Width; } listBox.HorizontalExtent = width + 2; }
private void SetColumnWith(ListBox lb) { List<ITableInfo> ds = lb.DataSource as List<ITableInfo>; if (ds != null) { string txt = (from p in ds orderby p.RawName.Length descending select p.RawName).First(); int width = (int)lb.CreateGraphics().MeasureString(txt, lb.Font).Width; lb.ColumnWidth = width; } }