I have made a custom control using c# and I have it in a project with another custom control. I include the compiled dllinto another project, but the BitmapButton is not visible (it seems it's not compiling). I don't know about the other control, because it wasn't made by me.

Here is the code of BitMapButton:
Code:
/*
 * Created by SharpDevelop.
 * User: MateuszJ
 * Date: 2007-08-07
 * Time: 22:36
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace Multitool.Controls
{
	/// <summary>
	/// Description of BitmapButton.
	/// </summary>
	public partial class BitmapButton : UserControl
	{
		public BitmapButton()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		
        Image backgroundImage, pressedImage;
        bool pressed = false;

        // Property for the background image to be drawn behind the button text.
        public Image BackgroundImage
        {
            get
            {
                return this.backgroundImage;
            }
            set
            {
                this.backgroundImage = value;
            }
        }

        // Property for the background image to be drawn behind the button text when
        // the button is pressed.
        public Image PressedImage
        {
            get
            {
                return this.pressedImage;
            }
            set
            {
                this.pressedImage = value;
            }
        }

        // When the mouse button is pressed, set the "pressed" flag to true 
        // and invalidate the form to cause a repaint.  The .NET Compact Framework 
        // sets the mouse capture automatically.
        protected override void OnMouseDown(MouseEventArgs e)
        {
            this.pressed = true;
            this.Invalidate();
            base.OnMouseDown (e);
        }

        // When the mouse is released, reset the "pressed" flag 
        // and invalidate to redraw the button in the unpressed state.
        protected override void OnMouseUp(MouseEventArgs e)
        {
            this.pressed = false;
            this.Invalidate();
            base.OnMouseUp (e);
        }

        // Override the OnPaint method to draw the background image and the text.
        protected override void OnPaint(PaintEventArgs e)
        {
            if(this.pressed && this.pressedImage != null)
                e.Graphics.DrawImage(this.pressedImage, 0, 0);
            else
                e.Graphics.DrawImage(this.backgroundImage, 0, 0);

            // Draw the text if there is any.
            if(this.Text.Length > 0)
            {
                SizeF size = e.Graphics.MeasureString(this.Text, this.Font);

                // Center the text inside the client area of the PictureButton.
                e.Graphics.DrawString(this.Text,
                    this.Font,
                    new SolidBrush(this.ForeColor),
                    (this.ClientSize.Width - size.Width) / 2,
                    (this.ClientSize.Height - size.Height) / 2);
            }

            // Draw a border around the outside of the 
            // control to look like Pocket PC buttons.
            e.Graphics.DrawRectangle(new Pen(Color.Black), 0, 0, 
                this.ClientSize.Width - 1, this.ClientSize.Height - 1);

            base.OnPaint(e);
        }
    
}
	}
and here is the code of the other control:
Code:
/*
 * Created by SharpDevelop.
 * User: MarcinS
 * Date: 2006-07-13
 * Time: 20:49
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace Multitool.Controls
{
	/// <summary>
	/// Description of ColorProgressBarWithText.
	/// </summary>
	public partial class ColorProgressBarWithText
	{
		public ColorProgressBarWithText()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		void ColorProgressBarWithTextPaint(object sender, System.Windows.Forms.PaintEventArgs e)
		{
			BackColor = this.Parent.BackColor;
  
			//brzegi
			Pen cien = new Pen(SystemColors.ControlDark);
			Pen swiatlo = new Pen(SystemColors.ControlLightLight);
			e.Graphics.DrawLine(cien,0,Height-1,0,0);
			e.Graphics.DrawLine(cien,0,0,Width-1,0);
			e.Graphics.DrawLine(swiatlo,Width-1,0,Width-1,Height-1);
			e.Graphics.DrawLine(swiatlo,Width-1,Height-1,0,Height-1);
			Bitmap bufor = new Bitmap(Width,Height);
			Graphics g = Graphics.FromImage(bufor);
			BackColor = this.Parent.BackColor;
			
			const int margines = 2;
			int stepwidth = 2*Height/3;
			double procenty = 0;
			if (Maximum>Minimum) procenty = (Value-Minimum)/(double)(Maximum-Minimum);
			int szerokosc = (int)Math.Round( procenty*(Width-2*margines-1));
			for (int i=margines;i<margines+szerokosc;i++) 
			{
			if (!Smooth && ((i%stepwidth)>0) && (i%stepwidth<margines+1)) continue;
			g.DrawLine(new Pen(ObliczKolor(i)), i,margines,i,Height-margines-1);
			
			}
			e.Graphics.DrawImage(bufor,0,0);
		}
		private Color ObliczKolor(int i)
		{
		if (i<0 || i>Width) throw new
			Exception("Zly parametr i");
		return Color.FromArgb(
		ColorBegin.R+i*(ColorEnd.R-ColorBegin.R)/Width,
		ColorBegin.G+i*(ColorEnd.G-ColorBegin.G)/Width,
		ColorBegin.B+i*(ColorEnd.B-ColorBegin.B)/Width);
		}
		public void PerformStep()
 		{
  			Value+=Step;
 		}
		#region Wlasnosci
			private int _Minimum = 0;
			private int _Maximum = 100;
			private int _Value = 0;
			private int _Step = 10;
			private Color _ColorBegin = Color.Yellow;
			private Color _ColorEnd = Color.Red;
			private bool _Smooth;
			private string _TextOn;
			
			public int Minimum 
			{ 
				get 
				{
					return _Minimum;
				}
				set 
				{
			   		if (value>_Maximum) 
			   			value = _Maximum;
			   		_Minimum = value;
			  		 Refresh(); 
				}
			}
			public int Maximum
			{
				get 
				{
					return _Maximum;
				}
				set 
				{
					if (value<_Minimum) 
						value = _Minimum;
					_Maximum = value;
					Refresh(); 
				}
			}
			public int Value 
			{
				get 
				{
					return _Value;
				}
				set 
				{
					if (value<_Minimum) 
						value = _Minimum;
					if (value>_Maximum) value = _Maximum;
						_Value = value;
					OnValueChanged(this,new EventArgs(),Value);
					Refresh(); 
				}
			}
			public int Step 
			{
				get 
				{
					return _Step;
				}
				set 
				{
					_Step = value;
				}
			}
			public Color ColorBegin 
			{
				get 
				{
					return _ColorBegin;
				}
				set 
				{
					_ColorBegin = value;
					Refresh(); 
				}
			}
			public Color ColorEnd 
			{
				get 
				{
					return _ColorEnd;
				}
				set 
				{
					_ColorEnd = value;
					Refresh(); 
				}
			}
			public bool Smooth 
			{
				get 
				{
					return _Smooth;
				}
				set 
				{
					_Smooth = value;
					Refresh(); 
				}
			}
			public string TextOn 
			{
				get 
				{
					return _TextOn;
				}
				set 
				{
					_TextOn = value;
					Refresh(); 
				}
			}
			
		#endregion
		#region Zdarzenie ValueChanged
			public delegate void ValueChangedEventHandler( object sender, System.EventArgs e, int _value);
		
			[Category("Behavior"), Description( "Zachodzi, gdy zmienia się własność Value.")]
			public event ValueChangedEventHandler ValueChanged;
		
			protected virtual void OnValueChanged( object sender, System.EventArgs e, int _value)
			{
				if (ValueChanged!=null)
				ValueChanged(this,e,_value);
			}
		#endregion
		
		void Refr(object sender, System.EventArgs e)
		{
			Refresh();
		}
	}
}