私は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);
}
}
}