程序说明:光标在程序主图上移动,左侧上方textbox可显示当前光标坐标,每点击一次可在左侧listview上显示点击序号,以及坐标值
1 Form的版面布局
要使放大之后控件之间的相对距离不变,则需要调整每个控件的anchor(top left right button),使之达到form放大后,控件之间的相对距离不变 。
2 字体
要使用系统附带的字体则需要
FrontDialog fd = new FrontDialog();
fd.ShowDialog().ToString();
要控制某个控件的text字体,则使用控件属性
textBox1.Font = fd.Font;
3 访问comboBox中的项
要使下拉菜单的项在其他控件text中显示,则用
comboBox1.SelectedItem.ToString();
4 捕获鼠标的坐标
有三种,都是相对于左上角的坐标
鼠标相对于该控件的位置
Point formPoint = 控件名.PointToClient( Control.MousePosition);
鼠标相对于该form的位置
Point formPoint = this.PointToClient( Control .MousePosition);
鼠标对于屏幕的位置
Point screenPoint = Control.MousePosition;
注意要细分X,Y坐标,可用formPoint的X,Y属性。
5 listview
要把信息显示在listview的不同列上
this.listView1.Items.Add(new ListViewItem( new string []{ (listView1.Items.Count + 1).ToString(), (formPoint.X * xrat).ToString(), (formPoint.Y * yrat).ToString() }));//第一列自增,紧接着第二列内容,第三列内容。
6 限制text的输入范围,只能输入整数,使用正则表达式
using System.Text.RegularExpressions;
string s = @"^\d+$";
if( Regex.IsMatch(str1,s))//str1 与s比较,返回一个bool值
7 控件被触发的先后顺序可能导致程序异常
比如:比例button和image_enter,原因是参数未初始化就开始使用。解决方法是在form1设置一个常量
public partial class Form1 : Form
{
public int xrat = 1,yrat = 1;
//...
}
8 要用一个窗口中的控件去控制另一个窗口中的控件,用委托实现相互传值
//form1中的代码
namespace homework
{
public delegate string GetText();
public delegate void SetText(string text);
public partial class Form1 : Form
{
public int xrat = 1, yrat = 1;
Form2 f2;
private void SetTextValue(string text)
{
textBox1.Text = text;
}
private string GetTextValue()
{
return textBox1.Text;
}
//...
private void button2_Click(object sender, EventArgs e)
{
//通过委托来进行两个窗体的互操作
f2 = new Form2 ( this.GetTextValue, this .SetTextValue);
}
}
//form2中的代码
namespace homework
{
public partial class Form2 : Form
{ private GetText getTextValue = null;
private SetText setTextValue= null;
private Form1 f1 = null;
public Form2(GetText getText,SetText setText)
{
InitializeComponent();
this.getTextValue = getText;
this.setTextValue = setText;
}
//...
}
}
然后在两个窗口中要用到对方控件的值,则用:
private void button2_Click(object sender, EventArgs e)
{
//通过委托来进行两个窗体的互操作
f2 = new Form2(this.GetTextValue, this.SetTextValue);
//通过给子窗体传递主窗体的对象或值来互操作
f2.ShowDialog();
Point formPoint = Image1.PointToClient(Control.MousePosition);
string str1 =f2.textBox3.Text;
string str2 =f2.textBox4.Text;
//...
}