我正在进行病理学项目,在那里我必须显示医生和医生的名字。列表框中的患者姓名的单行提供了它们之间的空间。问题是,当医生的名字足够长时,它会将患者姓名转移到右侧&如果它很小(反之亦然)我不想要。我需要他们在特定的位置。 有没有办法让我可以为这些文本框值设置x和y坐标。我正在使用listbox1。我使用以下命令。
ListBox1.Items.Add("Dr."+textBox1.text+" "+"Mrs."+textBox2.text);
然后我必须在A4纸上打印。
我知道这很简单,但我是C#的新手。请帮忙。
答案 0 :(得分:0)
为listbboxitems创建一个datatemplate。
在您的datatemplate中创建两个彼此相邻的控件(一个用于Dr,另一个用于患者)。
示例:强>
<ListView x:Name="lbDatabases" Height="138" Width="498" Canvas.Left="44" Canvas.Top="146" >
<ListView.View >
<ListView.ItemTemplate>
<DataTemplate>
<stackpanel Orientation=Horizontal>
<TextBlock />
<TextBlock />
</stackpanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView.View> </ListView>
答案 1 :(得分:0)
我唯一可以建议的是使用一个固定宽度的字体,它的所有字符都是相同的字符宽度。然后,您可以计算字符数并适当地测量出名称。非常长的名字可能会打破你的系统。
在专业应用程序中,我不会这样做。仅供参考。
固定宽度字体:http://en.wikipedia.org/wiki/Monospaced_font
这是代码(控制台是固定宽度的):
static void Main(string[] args)
{
string doctorName = "Dr. Vee";
string patientName = "Mrs. Park";
string doctorName2 = "Dr. Longer";
string patientName2 = "Mr. Ranker";
Console.WriteLine(GetFinalString(doctorName, patientName));
Console.WriteLine(GetFinalString(doctorName2, patientName2));
Console.ReadLine();
}
private static string GetFinalString(string doctorName, string patientName)
{
int targetPatientLocation = 15;
int length = doctorName.ToCharArray().Count();
int targetPatientSpaces = targetPatientLocation - length;
string final = doctorName;
for (int i = 0; i < targetPatientSpaces; i++)
{
final += " ";
}
final += patientName;
return final;
}
这会产生你想要的字符串,但我再也不会这样做,因为只需要很长的医生名字来打破这种逻辑。