1

PictureBox を InputBox に入れたいのですが、この方法で試してみましたが、うまくいきません (画像が表示されません):

InputBox の元のコードは次のとおりです。http://www.csharp-examples.net/inputbox/ 少しだけ変更しました。

InputBox から PictureBox をインクルードするコード:

public static DialogResult Show(string title, string luna_text, ref string luna_continut, string zi_text, ref string zi_continut, string ora_text, ref string ora_continut, string minut_text, ref string minut_continut, string mesaj, ref string imagine)

PictureBox picture = new PictureBox();

picture.ImageLocation = imagine;

picture.SetBounds(14, 60, 128, 128);

picture.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

form.Controls.AddRange(new Control[] { label1, textBox1, label2, textBox2, label3, textBox3, label4, textBox4, label5, picture, buttonOk });

imagine = picture.ImageLocation;

Form1 の PictureBox をインクルードするコード: (コードはプライベートな void関数にあります)

画像はリソースに追加されます!!

string inputbox = "";
string imagine = "alarma.png";

inputbox = CeasAlarma.InputBoxAnuntareAlarma.Show("CEAS ALARMA", "Luna:", ref luna, "Zi:", ref zi, "Ora:", ref ora, "Minut:", ref minut, "------ Ai o alarma care sunt in acest moment ! ------", ref imagine).ToString();

if (inputbox == "Cancel" || inputbox == "OK")
   //will do something
4

2 に答える 2

1

あなたのpictureBoxを構築するために、このコードを試してみてください

picture.Width = 100;

picture.Height = 100;//just an example

Bitmap image = new Bitmap("alarma.png");

picture.Image = (Image)image;

picture.SetBounds(14, 60, 128, 128);

picture.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;


form.Controls.AddRange(.....);
于 2012-07-29T16:13:34.617 に答える
1

このコードはInputBox、フォームのサイズが画像を表示するのに十分な大きさであることを確認して画像を取得します。また、配置を調整する必要があります。私がしたことは、InputBox の New メソッドに別のパラメーターを追加して、画像をコントロールに渡すことでした。これがどのように機能するかを確認してください。

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            string value = "Document 1";

            if (Tmp.InputBox("New document", "New document name:", ref value, new Bitmap("Your Image Here") == DialogResult.OK)
            {
                this.Text = value;
            }
        }
    }

    public static class Tmp  //Note new field called bitmap for passing your picture to the InputBox
    {
        public static DialogResult InputBox(string title, string promptText, ref string value, Bitmap image)
        {
            Form form = new Form();
            Label label = new Label();
            TextBox textBox = new TextBox();
            Button buttonOk = new Button();
            Button buttonCancel = new Button();
            PictureBox picture = new PictureBox();


            form.Text = title;
            label.Text = promptText;
            textBox.Text = value;
            picture.Image = image;

            buttonOk.Text = "OK";
            buttonCancel.Text = "Cancel";
            buttonOk.DialogResult = DialogResult.OK;
            buttonCancel.DialogResult = DialogResult.Cancel;

            label.SetBounds(9, 20, 372, 13);
            textBox.SetBounds(12, 36, 372, 20);
            buttonOk.SetBounds(228, 72, 75, 23);
            buttonCancel.SetBounds(309, 72, 75, 23);
            picture.SetBounds(14, 60, 128, 128);

            label.AutoSize = true;
            textBox.Anchor = textBox.Anchor | AnchorStyles.Right;
            buttonOk.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
            buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
            picture.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;

            form.ClientSize = new Size(396, 400); //Changed size to see the image
            form.ClientSize = new Size(Math.Max(300, label.Right + 10), form.ClientSize.Height); //Changed position so you are not shrinking the available size after the controls are added
            form.Controls.AddRange(new Control[] { label, textBox, buttonOk, buttonCancel, picture});
            form.FormBorderStyle = FormBorderStyle.FixedDialog;
            form.StartPosition = FormStartPosition.CenterScreen;
            form.MinimizeBox = false;
            form.MaximizeBox = false;
            form.AcceptButton = buttonOk; 
            form.CancelButton = buttonCancel;

            DialogResult dialogResult = form.ShowDialog();
            value = textBox.Text;
            return dialogResult;
        }

    }
}

コードで、コントロールを追加した後に ClientSize を設定していることに注意してください。したがって、画像は負の X 位置の値で表示されます。コントロールを追加する前に、ClientSize が Form Size より小さくないことを確認するか、ClientSize を設定することができます。上記の例を編集しましたので、ご覧ください。

于 2012-07-29T16:38:33.440 に答える