0

私はc#を初めて使用し、ButtonImageコントロールを作成しようとしています。TextAlignmentや画像リソースの選択など、ほとんどのコードを機能させることができましたが、画像が表示されません。TextImageRelationプロパティとImageAlignmentプロパティを追加してみましたが、効果はありませんでした。すべてが正しく行われたかどうかさえわかりません。私はMSDNとインターネットの検索に何時間も費やしました、助けてください、tnx。コードは次のとおりです。

namespace ImageButton
{
    //[System.ComponentModel.DefaultBindingProperty("ButtonText")]
    public partial class ImageButton : UserControl
    {
        private String name = "btn1";
        private String btnText = "Button1";
        private TextImageRelation textImage = TextImageRelation.Overlay;
        private ContentAlignment alignmentValue = ContentAlignment.MiddleRight;
        private ContentAlignment imageAlignmentValue = ContentAlignment.MiddleLeft;

        public ImageButton()
        {
            InitializeComponent();
        }
        //
        // Properties
        //
        [Description("Sets the Text Label"),
         Category("Custom")]
        public String ButtonText
        {
            get
            {
                return btnText;
            }
            set
            {
                btnText = value;
                btn1.Text = btnText;
            }
        }
        [Description("Sets the Button Image"),
         Category("Custom")]
        public Image Image
        {
            get;
            set;
        }
        [Description("Specifies the relationship of text to Image."),
         Category("Custom")]
        public TextImageRelation TextImageRelation { 
            get{
                return textImage;
            }
            set{
                textImage =value;
                btn1.TextImageRelation = textImage;
            }
        }
        [Category("Custom"),
         Description("Specifies the alignment of text.")]
        public ContentAlignment TextAlignment
        {
            get
            {
                return alignmentValue;
            }
            set
            {
                alignmentValue = value;
                btn1.TextAlign = alignmentValue;
                //Invalidate();
            }
        }
        [Category("Custom"),
         Description("Specifies the alignment of text.")]
        public ContentAlignment ImageAlignment
        {
            get
            {
                return imageAlignmentValue;
            }
            set
            {
                imageAlignmentValue = value;
                btn1.ImageAlign = imageAlignmentValue;
            }
        }    
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            StringFormat style = new StringFormat();
            style.Alignment = StringAlignment.Far;
            switch (alignmentValue)
            {
                case ContentAlignment.MiddleLeft:
                    style.Alignment = StringAlignment.Near;
                    break;
                case ContentAlignment.MiddleRight:
                    style.Alignment = StringAlignment.Far;
                    break;
                case ContentAlignment.MiddleCenter:
                    style.Alignment = StringAlignment.Center;
                    break;
            }
            // Call the DrawString method of the System.Drawing class to write   
            // text. Text and ClientRectangle are properties inherited from
            // Control.
            e.Graphics.DrawString(
                Text,
                Font,
                new SolidBrush(ForeColor),
                ClientRectangle, style);
        }
    }
}
4

1 に答える 1

0

解決済み:

それ以外の:

    public Image Image{ get; set;}

他のpplが提案したように、私は使用しました

    public Image Image{
        get { return image; }
        set
        {
            image = value;
            btn1.Image = image;
        }
    }
于 2012-08-03T05:01:28.123 に答える