Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Windows Forms / WinForm General / February 2005

Tip: Looking for answers? Try searching our database.

BUG in Combobox.Location ?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
B.J. - 16 Feb 2005 20:59 GMT
Hi,

I want to draw combobox to bottom of form. I have following code :

ComboBox C = new ComboBox();
C.Font=FontNormal;
Size CSize=C.Size;
C.Location = new Point(0,this.Height - CSize.Height); // this.Height is
Height of parent control
this.Controls.Add(C);

By me it is correct but down part of my combobox is drawn out of control.
Why ?

Thank you
Tim Wilson - 16 Feb 2005 21:29 GMT
I am assuming that the parent is a Form. Try using the ClientRectangle
property instead.
C.Location = new Point(0, this.ClientRectangle.Height - CSize.Height);

In addition, if you want the ComboBox fixed to the bottom left corner of the
parent then consider using the following line.
C.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;

Signature

Tim Wilson
.Net Compact Framework MVP

> Hi,
>
[quoted text clipped - 11 lines]
>
> Thank you
B.J. - 17 Feb 2005 07:53 GMT
Hi,

It does not help me. But ... now I debugging my code and I wonder even if I
set to Combobox.Font font of size 1 or 100 I get still same Height of
Combobox.Size !
It is a bad isn't ??? When I change font of combobox also size of combobox
will change so why it is not reflected by Combobox.Size ???

B.J.

> I am assuming that the parent is a Form. Try using the ClientRectangle
> property instead.
[quoted text clipped - 19 lines]
> >
> > Thank you
Tim Wilson - 17 Feb 2005 12:39 GMT
Changing to use the ClientRectangle property didn't resolve your issue? What
type of control is the parent in this situation? When setting the Font to a
larger size it should increase the size of the ComboBox and this should be
shown through the Size property. Can you post all the code that you are
using so that we can better understand where you might be going wrong?

Signature

Tim Wilson
.Net Compact Framework MVP

> Hi,
>
[quoted text clipped - 29 lines]
> > >
> > > Thank you
B.J. - 18 Feb 2005 16:45 GMT
Hi,

I do web browser control (it will host in Internet Explorer - on
client-side). I simplified code and here it is (and also changing font size
for control has no effect on Combobox.Size) :

namespace T {
public class BrowserControl : System.Windows.Forms.Control {

 const int FontSizeNormal=28;
 const String FontFamilyNormal="Arial";

 protected override void OnHandleCreated(EventArgs EA) {
  Font FontNormal = new Font(FontFamilyNormal,FontSizeNormal);

  ComboBox C = new ComboBox();
  C.Font=FontNormal;
  Size CSize=C.Size;
  C.Location = new Point(0,this.Height - CSize.Height);
  this.Controls.Add(C);

 }
}
}

And in HTML page it is in <OBJECT HEIGHT="100"  WIDTH="100" CLASSID="..."
...></OBJECT>

I use .NET version 1.1 on Windows Server 2003 EE, IE 6

Hope you will find where is problem ...
Tim Wilson - 18 Feb 2005 17:52 GMT
So what is the overall goal of the control? Have you tried creating a
UserControl, instead of inheriting from Control, and using the designer to
create your control? This can be done by creating a "Windows Control
Library" project. Below, I have created a UserControl that contains a
ComboBox that is fixed to the bottom-left corner. I have tested this control
in a Windows Forms application as well as embedded in a web page and it
works as expected. I am using Windows 2000 Pro, VS.Net 2003 w/ .Net Fx 1.1
SP1, IE 6.

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
namespace WindowsControlLibrary1
{
public class UserControl1 : System.Windows.Forms.UserControl
{
private System.Windows.Forms.ComboBox comboBox1;
public UserControl1()
{
InitializeComponent();
this.comboBox1.Location = new Point(0, (this.Height -
this.comboBox1.Size.Height));
this.comboBox1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
}
base.Dispose( disposing );
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.SuspendLayout();
//
// comboBox1
//
this.comboBox1.Font = new System.Drawing.Font("Arial", 27.75F,
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,
((System.Byte)(0)));
this.comboBox1.Location = new System.Drawing.Point(8, 8);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(72, 50);
this.comboBox1.TabIndex = 0;
//
// UserControl1
//
this.Controls.Add(this.comboBox1);
this.Name = "UserControl1";
this.Size = new System.Drawing.Size(100, 100);
this.ResumeLayout(false);
}
#endregion
}
}

Signature

Tim Wilson
.Net Compact Framework MVP

> Hi,
>
[quoted text clipped - 27 lines]
>
> Hope you will find where is problem ...
B.J. - 18 Feb 2005 19:15 GMT
I could use it so, but still can't understand why it does not work for
control ...

Thank you for your comments.

> So what is the overall goal of the control? Have you tried creating a
> UserControl, instead of inheriting from Control, and using the designer to
[quoted text clipped - 93 lines]
> >
> > Hope you will find where is problem ...
Tim Wilson - 18 Feb 2005 19:31 GMT
So did the UserControl work as expected? It should work for Control if you
really wanted it to. Try deriving the UserControl1 class, that I posted,
from System.Windows.Forms.Control and see if it works. So change this line
(public class UserControl1 : System.Windows.Forms.UserControl) to be this
line (public class UserControl1 : System.Windows.Forms.Control).

Signature

Tim Wilson
.Net Compact Framework MVP

> I could use it so, but still can't understand why it does not work for
> control ...
[quoted text clipped - 98 lines]
> > >
> > > Hope you will find where is problem ...
B.J. - 19 Feb 2005 16:27 GMT
When I comment
this.comboBox1.Size = new System.Drawing.Size(72, 50);
it does not work neither for : UserControl.

> So did the UserControl work as expected? It should work for Control if you
> really wanted it to. Try deriving the UserControl1 class, that I posted,
[quoted text clipped - 108 lines]
> > > >
> > > > Hope you will find where is problem ...
Tim Wilson - 19 Feb 2005 17:24 GMT
This probably has to do with the ComboBox getting set to a default size at
some point in it's creation process. So you can either explicitly set a Size
or you can move the code that is used to set the Location into an OnResize
override for the UserControl. So add this method to the UserControl1 class.

protected override void OnResize ( System.EventArgs e )
{
 this.comboBox1.Location = new Point(0, (this.Height -
this.comboBox1.Size.Height));
 base.OnResize(e);
}

Signature

Tim Wilson
.Net Compact Framework MVP

> When I comment
> this.comboBox1.Size = new System.Drawing.Size(72, 50);
[quoted text clipped - 112 lines]
> > > > >
> > > > > Hope you will find where is problem ...

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.