this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
this.BackColor = System.Drawing.Color.Transparent;\r
this.Controls.Add(this.label);\r
+ this.DoubleBuffered = true;\r
+ this.MinimumSize = new System.Drawing.Size(3, 3);\r
this.Name = "BitSwitch";\r
this.Size = new System.Drawing.Size(12, 24);\r
this.SizeChanged += new System.EventHandler(this.BitSwitch_SizeChanged);\r
{\r
public partial class BitSwitch : UserControl\r
{\r
+ #region fields\r
private bool state;\r
private bool isExponential;\r
private static Bitmap normal;\r
private static Bitmap exponent;\r
private static Bitmap hover;\r
+ #endregion\r
\r
- [Category("プロパティ変更")]\r
+ #region constructor\r
+ public BitSwitch()\r
+ {\r
+ InitializeComponent();\r
+ State = false;\r
+ if (BorderColor.IsEmpty)\r
+ {\r
+ BorderColor = Color.FromArgb(0xD5, 0xDF, 0xE5);\r
+ }\r
+ UpdateBackgroundImage();\r
+ }\r
+ #endregion\r
+\r
+ #region properties\r
+\r
+ [Category("Behavior")]\r
public event System.EventHandler StateChanged;\r
\r
\r
- [Category("データ")]\r
+ [Category("Data")]\r
[DefaultValue(typeof(bool), "True")]\r
public bool State\r
{\r
}\r
}\r
\r
- [Category("表示")]\r
+ [Category("Appearance")]\r
[DefaultValue(typeof(Color), "LightSteelBlue")]\r
public Color BorderColor\r
{\r
set;\r
}\r
\r
+ [CategoryAttribute("Data")]\r
+ [DefaultValue(typeof(bool), "False")]\r
public bool IsExponential\r
{\r
get\r
}\r
}\r
\r
- public BitSwitch()\r
+ #endregion\r
+\r
+ #region event handlers\r
+ private void label_Click(object sender, EventArgs e)\r
{\r
- InitializeComponent();\r
- State = false;\r
- if (BorderColor.IsEmpty)\r
+ Focus();\r
+ State = !state;\r
+ }\r
+\r
+ private void label_MouseLeave(object sender, EventArgs e)\r
+ {\r
+ BackgroundImage = IsExponential ? exponent : normal;\r
+ Update();\r
+ }\r
+\r
+ private void label_MouseEnter(object sender, EventArgs e)\r
+ {\r
+ BackgroundImage = hover;\r
+ Update();\r
+ }\r
+\r
+ private void label_Paint(object sender, PaintEventArgs e)\r
+ {\r
+ if (!Enabled)\r
{\r
- BorderColor = Color.FromArgb(0xD5, 0xDF, 0xE5);\r
+ e.Graphics.FillRectangle(\r
+ Brushes.LightGray, 0, 0, Width, Height);\r
+ }\r
+ using (Pen p = new Pen(BorderColor, 1))\r
+ {\r
+ int width = Tag != null ? Width - 1 : Width;\r
+ e.Graphics.DrawRectangle(p, 0, 0, width, Height - 1);\r
+ }\r
+ }\r
+\r
+ private void BitSwitch_SizeChanged(object sender, EventArgs e)\r
+ {\r
+ if (Width <= MinimumSize.Width || Height <= MinimumSize.Height)\r
+ {\r
+ return;\r
}\r
UpdateBackgroundImage();\r
}\r
\r
+ #endregion\r
+\r
+ #region private methods\r
+\r
private void CreateNormalBackgroundImage()\r
{\r
if (normal is Bitmap && normal.Size == Size)\r
private Bitmap CreateBackGroundImage(\r
Color hilight, Color light, Color face, Color dark)\r
{\r
- Bitmap bmp = new Bitmap(Width, Height);\r
+ if (Width < MinimumSize.Width || Height < MinimumSize.Height)\r
+ {\r
+ return null;\r
+ }\r
+ Bitmap bmp = new Bitmap(Width, Height);\r
Graphics g = Graphics.FromImage(bmp);\r
int border = (int)(Height * 0.48);\r
Rectangle upper = new Rectangle(0, 0, Width, border);\r
Rectangle lower = new Rectangle(0, border, Width, Height);\r
- LinearGradientBrush brushL = \r
+ LinearGradientBrush brushL =\r
new LinearGradientBrush(upper, hilight, light,\r
LinearGradientMode.Vertical);\r
- LinearGradientBrush brushD = \r
+ LinearGradientBrush brushD =\r
new LinearGradientBrush(lower, face, dark,\r
LinearGradientMode.Vertical);\r
Pen edge = new Pen(hilight, 1);\r
return bmp;\r
}\r
\r
- private void label_Click(object sender, EventArgs e)\r
- {\r
- Focus();\r
- State = !state;\r
- }\r
-\r
- private void label_MouseLeave(object sender, EventArgs e)\r
- {\r
- BackgroundImage = IsExponential? exponent : normal;\r
- Update();\r
- }\r
-\r
- private void label_MouseEnter(object sender, EventArgs e)\r
- {\r
- BackgroundImage = hover;\r
- Update();\r
- }\r
-\r
- private void label_Paint(object sender, PaintEventArgs e)\r
- {\r
- if (!Enabled)\r
- {\r
- e.Graphics.FillRectangle(\r
- Brushes.LightGray, 0, 0, Width, Height);\r
- }\r
- using (Pen p = new Pen(BorderColor, 1))\r
- {\r
- int width = Tag != null ? Width - 1 : Width;\r
- e.Graphics.DrawRectangle(p, 0, 0, width, Height - 1);\r
- }\r
- }\r
-\r
public void SetStateWithoutEvent(bool state)\r
{\r
this.state = state;\r
label.Text = state ? "1" : "0";\r
label.ForeColor = state ? Color.DarkSlateGray : Color.SteelBlue;\r
- label.Font = new Font(label.Font, \r
+ label.Font = new Font(label.Font,\r
state ? FontStyle.Bold : FontStyle.Regular);\r
}\r
\r
- private void BitSwitch_SizeChanged(object sender, EventArgs e)\r
- {\r
- UpdateBackgroundImage();\r
- }\r
-\r
private void UpdateBackgroundImage()\r
{\r
bool mouseOver = BackgroundImage == hover;\r
BackgroundImage = hover;\r
}\r
}\r
+\r
+ #endregion\r
}\r
}\r
| System.Windows.Forms.AnchorStyles.Right)));\r
this.label.Font = new System.Drawing.Font("Tahoma", 8F);\r
this.label.ForeColor = System.Drawing.Color.MidnightBlue;\r
- this.label.Location = new System.Drawing.Point(28, 0);\r
+ this.label.Location = new System.Drawing.Point(34, 0);\r
+ this.label.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);\r
this.label.Name = "label";\r
- this.label.Size = new System.Drawing.Size(23, 13);\r
+ this.label.Size = new System.Drawing.Size(28, 16);\r
this.label.TabIndex = 38;\r
this.label.Text = "0";\r
this.label.TextAlign = System.Drawing.ContentAlignment.BottomRight;\r
this.table.Controls.Add(this.b2, 1, 0);\r
this.table.Controls.Add(this.b0, 3, 0);\r
this.table.Controls.Add(this.b1, 2, 0);\r
- this.table.Location = new System.Drawing.Point(0, 16);\r
+ this.table.Location = new System.Drawing.Point(0, 19);\r
+ this.table.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);\r
this.table.Name = "table";\r
this.table.RowCount = 1;\r
this.table.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));\r
- this.table.Size = new System.Drawing.Size(47, 25);\r
+ this.table.Size = new System.Drawing.Size(56, 30);\r
this.table.TabIndex = 39;\r
// \r
// b3\r
this.b3.IsExponential = false;\r
this.b3.Location = new System.Drawing.Point(0, 0);\r
this.b3.Margin = new System.Windows.Forms.Padding(0);\r
+ this.b3.MinimumSize = new System.Drawing.Size(4, 4);\r
this.b3.Name = "b3";\r
- this.b3.Size = new System.Drawing.Size(11, 25);\r
+ this.b3.Size = new System.Drawing.Size(14, 30);\r
this.b3.State = false;\r
this.b3.TabIndex = 3;\r
// \r
this.b2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;\r
this.b2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(223)))), ((int)(((byte)(229)))));\r
this.b2.IsExponential = false;\r
- this.b2.Location = new System.Drawing.Point(11, 0);\r
+ this.b2.Location = new System.Drawing.Point(14, 0);\r
this.b2.Margin = new System.Windows.Forms.Padding(0);\r
+ this.b2.MinimumSize = new System.Drawing.Size(4, 4);\r
this.b2.Name = "b2";\r
- this.b2.Size = new System.Drawing.Size(11, 25);\r
+ this.b2.Size = new System.Drawing.Size(14, 30);\r
this.b2.State = false;\r
this.b2.TabIndex = 2;\r
// \r
this.b0.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;\r
this.b0.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(223)))), ((int)(((byte)(229)))));\r
this.b0.IsExponential = false;\r
- this.b0.Location = new System.Drawing.Point(33, 0);\r
+ this.b0.Location = new System.Drawing.Point(42, 0);\r
this.b0.Margin = new System.Windows.Forms.Padding(0);\r
+ this.b0.MinimumSize = new System.Drawing.Size(4, 4);\r
this.b0.Name = "b0";\r
- this.b0.Size = new System.Drawing.Size(11, 25);\r
+ this.b0.Size = new System.Drawing.Size(14, 30);\r
this.b0.State = false;\r
this.b0.TabIndex = 0;\r
this.b0.Tag = "true";\r
this.b1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;\r
this.b1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(223)))), ((int)(((byte)(229)))));\r
this.b1.IsExponential = false;\r
- this.b1.Location = new System.Drawing.Point(22, 0);\r
+ this.b1.Location = new System.Drawing.Point(28, 0);\r
this.b1.Margin = new System.Windows.Forms.Padding(0);\r
+ this.b1.MinimumSize = new System.Drawing.Size(4, 4);\r
this.b1.Name = "b1";\r
- this.b1.Size = new System.Drawing.Size(11, 25);\r
+ this.b1.Size = new System.Drawing.Size(14, 30);\r
this.b1.State = false;\r
this.b1.TabIndex = 1;\r
// \r
// BitSwitches4\r
// \r
- this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);\r
+ this.AutoScaleDimensions = new System.Drawing.SizeF(115F, 115F);\r
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;\r
this.Controls.Add(this.table);\r
this.Controls.Add(this.label);\r
+ this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);\r
this.Name = "BitSwitches4";\r
- this.Size = new System.Drawing.Size(50, 43);\r
+ this.Size = new System.Drawing.Size(60, 52);\r
this.SizeChanged += new System.EventHandler(this.BitSwitches4_SizeChanged);\r
this.table.ResumeLayout(false);\r
this.ResumeLayout(false);\r
-using System;\r
+/*\r
+ * Fugashi Project\r
+ *\r
+ * This software is distributed under a BSD-style license.\r
+ * See license.txt for more information.\r
+ */\r
+\r
+using System;\r
using System.Collections.Generic;\r
using System.ComponentModel;\r
using System.Drawing;\r
{\r
public partial class BitSwitches4 : UserControl\r
{\r
+ #region fields\r
private int startBit;\r
+ #endregion\r
+\r
+ #region constructor\r
+\r
public BitSwitches4()\r
{\r
InitializeComponent();\r
}\r
+ #endregion\r
\r
- [Category("データ")]\r
+ #region properties\r
+ [CategoryAttribute("Data")]\r
[DefaultValue(typeof(int), "-1")]\r
public int StartBit\r
{\r
return b3;\r
}\r
}\r
+ #endregion\r
\r
+ #region private methods\r
private void Coordinate()\r
{\r
int y = startBit < 32 ? label.Size.Height : 0;\r
int y = startBit < 32 ? label.Size.Height : 0;\r
table.Location = new Point(table.Location.X, y);\r
}\r
-\r
+ #endregion\r
}\r
}\r
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />\r
<data name="b3.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
<value>\r
- iVBORw0KGgoAAAANSUhEUgAAAAsAAAAZCAYAAADnstS2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKtJREFUOE+VztEK\r
- gzAQRNHp//+imiiVpiIiiIi11u5s8pyNC5d5OYQ8LjmU3nmSlx2O46eSa4V9j5hrhW2L/+BaYV0j5lph\r
- WSLmWmGev4q5VpimiLlWGMdDMdcKwxAx1wohfBRzrVBVlWKuFeq6Vsy1EuwSdoLzCfYJe8H50DStYq6V\r
- 4C7hTnA+OPdUzLW6i/v0ci8v54P3L8VcK8Eh4SA4n+C34pJD2w5XaX9xMuf+td64xAAAAABJRU5ErkJg\r
- gg==\r
+ iVBORw0KGgoAAAANSUhEUgAAAA4AAAAeCAYAAAAcni9KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
+ YQUAAAAJcEhZcwAAEa8AABGvAff9S4QAAADKSURBVDhPnc5pCsJgDIThuf8Zu7vVFhFRRFq3Sb4cINPA\r
+ y/x6IPhtPHw+2yTW9evSVgnLUqCtEl6v8qutEp7PAm2V8HgUaKuE+71AWyXcbm+Htkq4Xgu0VcLlUqCt\r
+ EuZ5dWirhGkq0FYJ47g4tFVCVVUObZVQ17VDWyXCJmBDmI+wDdgS5iPsAnaE+dA0vUNbJcIh4ECYD227\r
+ c2irRLgPuCfMR3gIeCDMR3gMeCTMh647ObRVIhwDjoT5CM8Bz4T5CCeH6qHv59+W/p0oMG24BjG/AAAA\r
+ AElFTkSuQmCC\r
</value>\r
</data>\r
<data name="b2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
<value>\r
- iVBORw0KGgoAAAANSUhEUgAAAAsAAAAZCAYAAADnstS2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKtJREFUOE+VztEK\r
- gzAQRNHp//+imiiVpiIiiIi11u5s8pyNC5d5OYQ8LjmU3nmSlx2O46eSa4V9j5hrhW2L/+BaYV0j5lph\r
- WSLmWmGev4q5VpimiLlWGMdDMdcKwxAx1wohfBRzrVBVlWKuFeq6Vsy1EuwSdoLzCfYJe8H50DStYq6V\r
- 4C7hTnA+OPdUzLW6i/v0ci8v54P3L8VcK8Eh4SA4n+C34pJD2w5XaX9xMuf+td64xAAAAABJRU5ErkJg\r
- gg==\r
+ iVBORw0KGgoAAAANSUhEUgAAAA4AAAAeCAYAAAAcni9KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
+ YQUAAAAJcEhZcwAAEa8AABGvAff9S4QAAADKSURBVDhPnc5pCsJgDIThuf8Zu7vVFhFRRFq3Sb4cINPA\r
+ y/x6IPhtPHw+2yTW9evSVgnLUqCtEl6v8qutEp7PAm2V8HgUaKuE+71AWyXcbm+Htkq4Xgu0VcLlUqCt\r
+ EuZ5dWirhGkq0FYJ47g4tFVCVVUObZVQ17VDWyXCJmBDmI+wDdgS5iPsAnaE+dA0vUNbJcIh4ECYD227\r
+ c2irRLgPuCfMR3gIeCDMR3gMeCTMh647ObRVIhwDjoT5CM8Bz4T5CCeH6qHv59+W/p0oMG24BjG/AAAA\r
+ AElFTkSuQmCC\r
</value>\r
</data>\r
<data name="b0.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
<value>\r
- iVBORw0KGgoAAAANSUhEUgAAAAsAAAAZCAYAAADnstS2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKtJREFUOE+VztEK\r
- gzAQRNHp//+imiiVpiIiiIi11u5s8pyNC5d5OYQ8LjmU3nmSlx2O46eSa4V9j5hrhW2L/+BaYV0j5lph\r
- WSLmWmGev4q5VpimiLlWGMdDMdcKwxAx1wohfBRzrVBVlWKuFeq6Vsy1EuwSdoLzCfYJe8H50DStYq6V\r
- 4C7hTnA+OPdUzLW6i/v0ci8v54P3L8VcK8Eh4SA4n+C34pJD2w5XaX9xMuf+td64xAAAAABJRU5ErkJg\r
- gg==\r
+ iVBORw0KGgoAAAANSUhEUgAAAA4AAAAeCAYAAAAcni9KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
+ YQUAAAAJcEhZcwAAEa8AABGvAff9S4QAAADKSURBVDhPnc5pCsJgDIThuf8Zu7vVFhFRRFq3Sb4cINPA\r
+ y/x6IPhtPHw+2yTW9evSVgnLUqCtEl6v8qutEp7PAm2V8HgUaKuE+71AWyXcbm+Htkq4Xgu0VcLlUqCt\r
+ EuZ5dWirhGkq0FYJ47g4tFVCVVUObZVQ17VDWyXCJmBDmI+wDdgS5iPsAnaE+dA0vUNbJcIh4ECYD227\r
+ c2irRLgPuCfMR3gIeCDMR3gMeCTMh647ObRVIhwDjoT5CM8Bz4T5CCeH6qHv59+W/p0oMG24BjG/AAAA\r
+ AElFTkSuQmCC\r
</value>\r
</data>\r
<data name="b1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">\r
<value>\r
- iVBORw0KGgoAAAANSUhEUgAAAAsAAAAZCAYAAADnstS2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKtJREFUOE+VztEK\r
- gzAQRNHp//+imiiVpiIiiIi11u5s8pyNC5d5OYQ8LjmU3nmSlx2O46eSa4V9j5hrhW2L/+BaYV0j5lph\r
- WSLmWmGev4q5VpimiLlWGMdDMdcKwxAx1wohfBRzrVBVlWKuFeq6Vsy1EuwSdoLzCfYJe8H50DStYq6V\r
- 4C7hTnA+OPdUzLW6i/v0ci8v54P3L8VcK8Eh4SA4n+C34pJD2w5XaX9xMuf+td64xAAAAABJRU5ErkJg\r
- gg==\r
+ iVBORw0KGgoAAAANSUhEUgAAAA4AAAAeCAYAAAAcni9KAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8\r
+ YQUAAAAJcEhZcwAAEa8AABGvAff9S4QAAADKSURBVDhPnc5pCsJgDIThuf8Zu7vVFhFRRFq3Sb4cINPA\r
+ y/x6IPhtPHw+2yTW9evSVgnLUqCtEl6v8qutEp7PAm2V8HgUaKuE+71AWyXcbm+Htkq4Xgu0VcLlUqCt\r
+ EuZ5dWirhGkq0FYJ47g4tFVCVVUObZVQ17VDWyXCJmBDmI+wDdgS5iPsAnaE+dA0vUNbJcIh4ECYD227\r
+ c2irRLgPuCfMR3gIeCDMR3gMeCTMh647ObRVIhwDjoT5CM8Bz4T5CCeH6qHv59+W/p0oMG24BjG/AAAA\r
+ AElFTkSuQmCC\r
</value>\r
</data>\r
</root>
\ No newline at end of file
this.radio4B = new System.Windows.Forms.RadioButton();\r
this.radio2B = new System.Windows.Forms.RadioButton();\r
this.radio1B = new System.Windows.Forms.RadioButton();\r
- this.textValue = new System.Windows.Forms.TextBox();\r
- this.textHex = new System.Windows.Forms.TextBox();\r
+ this.textValue = new System.Windows.Forms.MaskedTextBox();\r
+ this.textHex = new System.Windows.Forms.MaskedTextBox();\r
this.buttonLsh = new System.Windows.Forms.Button();\r
this.buttonRsh = new System.Windows.Forms.Button();\r
this.buttonInc = new System.Windows.Forms.Button();\r
// \r
// textValue\r
// \r
+ this.textValue.AsciiOnly = true;\r
this.textValue.Font = new System.Drawing.Font("MS UI Gothic", 10.01739F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));\r
+ this.textValue.ImeMode = System.Windows.Forms.ImeMode.Disable;\r
this.textValue.Location = new System.Drawing.Point(57, 33);\r
this.textValue.Name = "textValue";\r
this.textValue.Size = new System.Drawing.Size(255, 23);\r
this.textValue.TabIndex = 87;\r
this.textValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
- this.textValue.TextChanged += new System.EventHandler(this.textValue_TextChanged);\r
this.textValue.Leave += new System.EventHandler(this.textValue_Leave);\r
+ this.textValue.TextChanged += new System.EventHandler(this.textValue_TextChanged);\r
// \r
// textHex\r
// \r
+ this.textHex.AsciiOnly = true;\r
this.textHex.Font = new System.Drawing.Font("MS UI Gothic", 10.01739F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));\r
+ this.textHex.ImeMode = System.Windows.Forms.ImeMode.Disable;\r
this.textHex.Location = new System.Drawing.Point(57, 64);\r
this.textHex.Name = "textHex";\r
this.textHex.Size = new System.Drawing.Size(255, 23);\r
this.textHex.TabIndex = 88;\r
this.textHex.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;\r
- this.textHex.TextChanged += new System.EventHandler(this.textHex_TextChanged);\r
this.textHex.Leave += new System.EventHandler(this.textHex_Leave);\r
+ this.textHex.TextChanged += new System.EventHandler(this.textHex_TextChanged);\r
// \r
// buttonLsh\r
// \r
private System.Windows.Forms.RadioButton radio4B;\r
private System.Windows.Forms.RadioButton radio2B;\r
private System.Windows.Forms.RadioButton radio1B;\r
- private System.Windows.Forms.TextBox textValue;\r
- private System.Windows.Forms.TextBox textHex;\r
+ private System.Windows.Forms.MaskedTextBox textValue;\r
+ private System.Windows.Forms.MaskedTextBox textHex;\r
private System.Windows.Forms.Label labelValue;\r
private System.Windows.Forms.Label labelHex;\r
private BitSwitches4 bits0;\r
{\r
public partial class MainForm : Form\r
{\r
+ #region fields\r
private BitSwitch[] bits;\r
private int length = 4;\r
+ #endregion\r
\r
+ #region constructor\r
public MainForm()\r
{\r
InitializeComponent();\r
\r
PerformAutoScale();\r
}\r
+ #endregion\r
+\r
+ #region event handlers\r
+\r
+ private void MainForm_KeyDown(object sender, KeyEventArgs e)\r
+ {\r
+ if (e.Alt)\r
+ {\r
+ switch (e.KeyCode)\r
+ {\r
+ case Keys.V:\r
+ textValue.Focus();\r
+ break;\r
+ case Keys.H:\r
+ textHex.Focus();\r
+ break;\r
+ default:\r
+ return;\r
+ }\r
+ e.SuppressKeyPress = true;\r
+ }\r
+ }\r
\r
private void radioUint_CheckedChanged(object sender, EventArgs e)\r
{\r
BitChanged(null, null);\r
}\r
\r
- private void SetForFloatingPoint(bool isDouble)\r
- {\r
- for (int i = 23; i < 31; ++i)\r
- {\r
- bits[i].IsExponential = !isDouble;\r
- }\r
- for (int i = 52; i < 63; ++i)\r
- {\r
- bits[i].IsExponential = isDouble;\r
- }\r
- }\r
-\r
- private void SetForInteger()\r
- {\r
- for (int i = 0; i < 64; ++i)\r
- {\r
- bits[i].IsExponential = false;\r
- }\r
- }\r
-\r
- private byte[] GetBytes()\r
- {\r
- byte[] b = new Byte[8];\r
- int i = 0;\r
- for (int j = 0; j < 8; ++j)\r
- {\r
- b[j] = 0;\r
- i += 8;\r
- for (int k = 0; k < 8; ++k)\r
- {\r
- b[j] = (byte)(b[j] << 1 | (bits[--i].State ? 1 : 0));\r
- }\r
- i += 8;\r
- }\r
- return b;\r
- }\r
-\r
- private long ToInt64(byte[] bytes)\r
- {\r
- switch (length)\r
- {\r
- case 1:\r
- return (sbyte)bytes[0];\r
- case 2:\r
- return BitConverter.ToInt16(bytes, 0);\r
- case 4:\r
- return BitConverter.ToInt32(bytes, 0);\r
- case 8:\r
- return BitConverter.ToInt64(bytes, 0);\r
- }\r
- return 0;\r
- }\r
-\r
- private ulong ToUInt64(byte[] bytes)\r
- {\r
- switch (length)\r
- {\r
- case 1:\r
- return bytes[0];\r
- case 2:\r
- return BitConverter.ToUInt16(bytes, 0);\r
- case 4:\r
- return BitConverter.ToUInt32(bytes, 0);\r
- case 8:\r
- return BitConverter.ToUInt64(bytes, 0);\r
- }\r
- return 0;\r
- }\r
-\r
private void radio8B_CheckedChanged(object sender, EventArgs e)\r
{\r
if (radio8B.Checked)\r
}\r
}\r
\r
- private void SetLength(int length)\r
+ \r
+ private void buttonInc_Click(object sender, EventArgs e)\r
{\r
- this.length = length;\r
- int b = length * 8;\r
- for (int i = 8; i < b; ++i)\r
- {\r
- bits[i].Enabled = true;\r
- }\r
- for (int i = b; i < 64; ++i)\r
- {\r
- bits[i].Enabled = false;\r
- }\r
if (radioFloat.Checked)\r
{\r
- textValue_TextChanged(null, null);\r
+ if (length == 4)\r
+ {\r
+ int value = BitConverter.ToInt32(GetBytes(), 0);\r
+ if (value == -0x80000000)\r
+ {\r
+ value = 0;\r
+ }\r
+ else\r
+ {\r
+ value += value >= 0 ? 1 : -1;\r
+ }\r
+ UpdateAll(BitConverter.GetBytes(value));\r
+ }\r
+ else\r
+ {\r
+ long value = BitConverter.ToInt64(GetBytes(), 0);\r
+ if (value == (1L << 63))\r
+ {\r
+ value = 0;\r
+ }\r
+ else\r
+ {\r
+ value += value >= 0 ? 1 : -1;\r
+ }\r
+ UpdateAll(BitConverter.GetBytes(value));\r
+ }\r
}\r
else\r
{\r
- BitChanged(null, null);\r
+ ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+ UpdateAll(BitConverter.GetBytes(++value));\r
}\r
}\r
\r
- private void BitChanged(object sender, EventArgs e)\r
- {\r
- byte[] b = GetBytes();\r
- UpdateValue(b);\r
- UpdateHex(b);\r
- }\r
-\r
- private void UpdateValue(byte[] bytes)\r
+ private void buttonDec_Click(object sender, EventArgs e)\r
{\r
- if (radioUint.Checked)\r
- {\r
- textValue.Text = ToUInt64(bytes).ToString();\r
- }\r
- else if (radioInt.Checked)\r
- {\r
- textValue.Text = ToInt64(bytes).ToString();\r
- }\r
- else if (radioFloat.Checked)\r
+ if (radioFloat.Checked)\r
{\r
if (length == 4)\r
{\r
- float value = BitConverter.ToSingle(bytes, 0);\r
- textValue.Text = value.ToString("g8");\r
+ int value = BitConverter.ToInt32(GetBytes(), 0);\r
+ if (value == 0)\r
+ {\r
+ value = 1 << 31;\r
+ }\r
+ else\r
+ {\r
+ value -= value >= 0 ? 1 : -1;\r
+ }\r
+ UpdateAll(BitConverter.GetBytes(value));\r
}\r
else\r
{\r
- double value = BitConverter.ToDouble(bytes, 0);\r
- textValue.Text = value.ToString("g17");\r
+ long value = BitConverter.ToInt64(GetBytes(), 0);\r
+ if (value == 0)\r
+ {\r
+ value = 1L << 63;\r
+ }\r
+ else\r
+ {\r
+ value -= value >= 0 ? 1 : -1;\r
+ }\r
+ UpdateAll(BitConverter.GetBytes(value));\r
}\r
}\r
+ else\r
+ {\r
+ ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+ UpdateAll(BitConverter.GetBytes(--value));\r
+ }\r
}\r
\r
- private void UpdateHex(byte[] bytes)\r
+ private void buttonClr_Click(object sender, EventArgs e)\r
{\r
- textHex.Text = "";\r
- for (int i = length - 1; i >= 0; --i)\r
- {\r
- textHex.Text += bytes[i].ToString("X2");\r
- }\r
+ UpdateAll(BitConverter.GetBytes((ulong)0));\r
}\r
\r
- private void UpdateBits(byte[] bytes)\r
+ private void buttonNot_Click(object sender, EventArgs e)\r
{\r
- int i = 0;\r
- for (int j = 0; j < length; ++j)\r
- {\r
- int mask = 1;\r
- for (int k = 0; k < 8; ++k)\r
- {\r
- bits[i++].SetStateWithoutEvent((bytes[j] & mask) != 0);\r
- mask <<= 1;\r
- }\r
- }\r
+ ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+ UpdateAll(BitConverter.GetBytes(~value));\r
}\r
\r
- private void UpdateAll(byte[] bytes)\r
+ private void buttonLsh_Click(object sender, EventArgs e)\r
{\r
- UpdateBits(bytes);\r
- UpdateValue(bytes);\r
- UpdateHex(bytes);\r
+ ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+ UpdateAll(BitConverter.GetBytes(value << 1));\r
+ }\r
+\r
+ private void buttonRsh_Click(object sender, EventArgs e)\r
+ {\r
+ if (radioInt.Checked)\r
+ {\r
+ long value = ToInt64(GetBytes());\r
+ UpdateAll(BitConverter.GetBytes(value >> 1));\r
+ }\r
+ else\r
+ {\r
+ ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
+ UpdateAll(BitConverter.GetBytes(value >> 1));\r
+ }\r
}\r
\r
private void textHex_TextChanged(object sender, EventArgs e)\r
UpdateHex(b);\r
}\r
\r
- private void buttonInc_Click(object sender, EventArgs e)\r
+ private void textValue_Leave(object sender, EventArgs e)\r
{\r
- if (radioFloat.Checked)\r
+ UpdateValue(GetBytes());\r
+ }\r
+\r
+ private void textHex_Leave(object sender, EventArgs e)\r
+ {\r
+ UpdateHex(GetBytes());\r
+ }\r
+\r
+ private void BitChanged(object sender, EventArgs e)\r
+ {\r
+ byte[] b = GetBytes();\r
+ UpdateValue(b);\r
+ UpdateHex(b);\r
+ }\r
+\r
+ #endregion\r
+\r
+ #region private methods\r
+\r
+ private void SetForFloatingPoint(bool isDouble)\r
+ {\r
+ for (int i = 23; i < 31; ++i)\r
{\r
- if (length == 4)\r
- {\r
- int value = BitConverter.ToInt32(GetBytes(), 0);\r
- if (value == -0x80000000)\r
- {\r
- value = 0;\r
- }\r
- else\r
- {\r
- value += value >= 0 ? 1 : -1;\r
- }\r
- UpdateAll(BitConverter.GetBytes(value));\r
- }\r
- else\r
- {\r
- long value = BitConverter.ToInt64(GetBytes(), 0);\r
- if (value == (1L << 63))\r
- {\r
- value = 0;\r
- }\r
- else\r
- {\r
- value += value >= 0 ? 1 : -1;\r
- }\r
- UpdateAll(BitConverter.GetBytes(value));\r
- }\r
+ bits[i].IsExponential = !isDouble;\r
}\r
- else\r
+ for (int i = 52; i < 63; ++i)\r
{\r
- ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
- UpdateAll(BitConverter.GetBytes(++value));\r
+ bits[i].IsExponential = isDouble;\r
}\r
+ textValue.ValidatingType = typeof(Double);\r
}\r
\r
- private void buttonDec_Click(object sender, EventArgs e)\r
+ private void SetForInteger()\r
{\r
- if (radioFloat.Checked)\r
- {\r
- if (length == 4)\r
- {\r
- int value = BitConverter.ToInt32(GetBytes(), 0);\r
- if (value == 0)\r
- {\r
- value = 1 << 31;\r
- }\r
- else\r
- {\r
- value -= value >= 0 ? 1 : -1;\r
- }\r
- UpdateAll(BitConverter.GetBytes(value));\r
- }\r
- else\r
- {\r
- long value = BitConverter.ToInt64(GetBytes(), 0);\r
- if (value == 0)\r
- {\r
- value = 1L << 63;\r
- }\r
- else\r
- {\r
- value -= value >= 0 ? 1 : -1;\r
- }\r
- UpdateAll(BitConverter.GetBytes(value));\r
- }\r
- }\r
- else\r
+ for (int i = 0; i < 64; ++i)\r
{\r
- ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
- UpdateAll(BitConverter.GetBytes(--value));\r
+ bits[i].IsExponential = false;\r
}\r
+ textValue.ValidatingType = typeof(long);\r
}\r
\r
- private void buttonClr_Click(object sender, EventArgs e)\r
+ private byte[] GetBytes()\r
{\r
- UpdateAll(BitConverter.GetBytes((ulong)0));\r
+ byte[] b = new Byte[8];\r
+ int i = 0;\r
+ for (int j = 0; j < 8; ++j)\r
+ {\r
+ b[j] = 0;\r
+ i += 8;\r
+ for (int k = 0; k < 8; ++k)\r
+ {\r
+ b[j] = (byte)(b[j] << 1 | (bits[--i].State ? 1 : 0));\r
+ }\r
+ i += 8;\r
+ }\r
+ return b;\r
}\r
\r
- private void buttonNot_Click(object sender, EventArgs e)\r
+ private long ToInt64(byte[] bytes)\r
{\r
- ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
- UpdateAll(BitConverter.GetBytes(~value));\r
+ switch (length)\r
+ {\r
+ case 1:\r
+ return (sbyte)bytes[0];\r
+ case 2:\r
+ return BitConverter.ToInt16(bytes, 0);\r
+ case 4:\r
+ return BitConverter.ToInt32(bytes, 0);\r
+ case 8:\r
+ return BitConverter.ToInt64(bytes, 0);\r
+ }\r
+ return 0;\r
}\r
\r
- private void buttonLsh_Click(object sender, EventArgs e)\r
+ private ulong ToUInt64(byte[] bytes)\r
{\r
- ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
- UpdateAll(BitConverter.GetBytes(value << 1));\r
+ switch (length)\r
+ {\r
+ case 1:\r
+ return bytes[0];\r
+ case 2:\r
+ return BitConverter.ToUInt16(bytes, 0);\r
+ case 4:\r
+ return BitConverter.ToUInt32(bytes, 0);\r
+ case 8:\r
+ return BitConverter.ToUInt64(bytes, 0);\r
+ }\r
+ return 0;\r
}\r
\r
- private void buttonRsh_Click(object sender, EventArgs e)\r
+ private void SetLength(int length)\r
{\r
- if (radioInt.Checked)\r
+ this.length = length;\r
+ int b = length * 8;\r
+ for (int i = 8; i < b; ++i)\r
{\r
- long value = ToInt64(GetBytes());\r
- UpdateAll(BitConverter.GetBytes(value >> 1));\r
+ bits[i].Enabled = true;\r
+ }\r
+ for (int i = b; i < 64; ++i)\r
+ {\r
+ bits[i].Enabled = false;\r
+ }\r
+ if (radioFloat.Checked)\r
+ {\r
+ textValue_TextChanged(null, null);\r
}\r
else\r
{\r
- ulong value = BitConverter.ToUInt64(GetBytes(), 0);\r
- UpdateAll(BitConverter.GetBytes(value >> 1));\r
+ BitChanged(null, null);\r
}\r
}\r
\r
- private void textValue_Leave(object sender, EventArgs e)\r
+ private void UpdateValue(byte[] bytes)\r
{\r
- UpdateValue(GetBytes());\r
+ if (radioUint.Checked)\r
+ {\r
+ textValue.Text = ToUInt64(bytes).ToString();\r
+ }\r
+ else if (radioInt.Checked)\r
+ {\r
+ textValue.Text = ToInt64(bytes).ToString();\r
+ }\r
+ else if (radioFloat.Checked)\r
+ {\r
+ if (length == 4)\r
+ {\r
+ float value = BitConverter.ToSingle(bytes, 0);\r
+ textValue.Text = value.ToString("g8");\r
+ }\r
+ else\r
+ {\r
+ double value = BitConverter.ToDouble(bytes, 0);\r
+ textValue.Text = value.ToString("g17");\r
+ }\r
+ }\r
}\r
\r
- private void textHex_Leave(object sender, EventArgs e)\r
+ private void UpdateHex(byte[] bytes)\r
{\r
- UpdateHex(GetBytes());\r
+ textHex.Text = "";\r
+ for (int i = length - 1; i >= 0; --i)\r
+ {\r
+ textHex.Text += bytes[i].ToString("X2");\r
+ }\r
}\r
\r
- private void MainForm_KeyDown(object sender, KeyEventArgs e)\r
+ private void UpdateBits(byte[] bytes)\r
{\r
- if (e.Alt)\r
+ int i = 0;\r
+ for (int j = 0; j < length; ++j)\r
{\r
- switch (e.KeyCode)\r
- { \r
- case Keys.V:\r
- textValue.Focus();\r
- break;\r
- case Keys.H:\r
- textHex.Focus();\r
- break;\r
- default:\r
- return;\r
+ int mask = 1;\r
+ for (int k = 0; k < 8; ++k)\r
+ {\r
+ bits[i++].SetStateWithoutEvent((bytes[j] & mask) != 0);\r
+ mask <<= 1;\r
}\r
- e.SuppressKeyPress = true;\r
}\r
}\r
+\r
+ private void UpdateAll(byte[] bytes)\r
+ {\r
+ UpdateBits(bytes);\r
+ UpdateValue(bytes);\r
+ UpdateHex(bytes);\r
+ }\r
+\r
+ #endregion\r
}\r
}\r
// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を \r
// 既定値にすることができます:\r
// [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("0.0.0.0")]\r
-[assembly: AssemblyFileVersion("0.0.0.0")]\r
+[assembly: AssemblyVersion("0.0.0.1")]\r
+[assembly: AssemblyFileVersion("0.0.0.1")]\r